2012-11-30 207 views
1

我已經實現了使用JQuery插件的會話超時,並且它已從頁面加載實現,如 ,它啓動計時器,並在10秒後顯示一個彈出窗口。 像這樣http://rigoneri.github.com/timeout-dialog.js/使用JQuery的會話超時問題

function ShowTimeoutWarning(){ 
$.timeoutDialog({timeout: 1, countdown: 60, restart_on_yes: false}); 

}

setTimeout('ShowTimeoutWarning();', 100000); 

當用戶處於閒置狀態,持續10秒此代碼工作正常。但即使用戶正在頁面上進行一些操作,也會顯示彈出窗口,無論用戶是否閒置。我只想在用戶空閒時運行此代碼。 請在這方面幫助我。

謝謝!

回答

0

這是用計時器和一些JavaScript來完成的。當定時器在頁面上到期時,瀏覽器請求一個在服務器上調用session.invalidate()的URL。

1

有一個啓動setTimeout()的公共javascript函數。請注意,這應該比web.xml中定義的會話超時時間短。所以當超時到期時,你會向用戶發出警告,詢問是否使會話無效。在每次服務器調用和每個頁面重新加載時,重置此setTimeout()。

希望這會有所幫助。

+0

小澄,..我有4頁除登錄頁面。我是否需要在所有4個頁面中編寫此腳本setTimeout()?當會話超時到期時如何調用此函數?它在控制器中嗎? – madhu

+0

通常,我們要做的就是使用include jsp標記來導入所有頁面所需的常用java腳本文件,以便所有將來的頁面也將從導入所需的常用javascript文件的相同jsp中繼承。在頁面加載時,您可以在DOM準備就緒後執行setTimeout()。 – dinukadev

0

你應該嘗試的jQuery插件idleTimer http://www.paulirish.com/2009/jquery-idletimer-plugin/

<script type="text/javascript"> 

    $(function() { 
     var timeout = 10000; 
     $(document).bind("idle.idleTimer", function() { 
      // function you want to fire when the user goes idle 
      $.timeoutDialog({ timeout: 0.25, countdown: 30, keep_alive_url: '/KeepAlive.aspx', logout_redirect_url: '/Signin.aspx', restart_on_yes: true }); 
     }); 
     $(document).bind("active.idleTimer", function() { 
      // function you want to fire when the user becomes active again     
      $.get('KeepAlive.aspx?date=' + escape(new Date())); 
     }); 
     $.idleTimer(timeout); 
    }); 

</script>