2012-12-13 139 views
1

我正在使用的應用程序正在使用jQuery實現一些會話超時提示。有一個計時器,如果預定義的X分鐘後沒有用戶活動,則顯示用戶提示會話超時提示asp.net

(您的會話將很快結束...繼續或註銷)。

它使用此處找到的方法 - http://www.codeproject.com/Articles/227382/Alert-Session-Time-out-in-ASP-Net

然而,如果用戶打開新的標籤,這並不工作:

1)用戶登錄時,計時器開始計時用戶不活動的。

2)用戶單擊某個在新窗口中打開的鏈接(例如,在我們的情況下,它是一個長時間運行的報表)。第二個選項卡是活動的,有一些響應(不會結束會話的回傳/回傳)。

3)第二個瀏覽器選項卡處於活動狀態,有一些活動不會結束會話。

4)但是,第一個瀏覽器選項卡處於非活動狀態,計數器正在「思考」會話應該關閉,它將顯示相應的消息,然後註銷用戶。

這不是我們想要的。因此,給定的方法只是一些會話超時修復,但如果用戶在另一個選項卡中處於活動狀態,則應用程序仍會退出用戶。這不是期望的事情。 我們有一個報告頁面。它的功能是在一個新的標籤頁/窗口中打開報告。它可能會運行很長時間。報告部分照顧一些回調,所以會話不會在此選項卡中結束。但是,它會在第二個選項卡中結束。

編輯: 我有以下sollution:「存儲一個Javascript cookie,並檢查,以確定會話已被擴展到另一個選項卡?」。 我仍試圖理解這一點。

回答

2

您可以使用LocalStorage概念來保存上次活動時間。

如果你保存它的標籤之一,這將是從其他選項卡以及訪問...

這是支持所有的modern browsers

例子:

當檢測到活動中使用:

localStorage['lastActivity'] = new Date();

當你要檢查它:

var lastActityTime = localStorage['lastActivity'];

+0

我已經嘗試過同樣的概念用JavaScript餅乾。但可能這個localstroage也以同樣的方式工作。 – renathy