2012-06-19 93 views
-1

我有這個功能建立在Jquery/JavaScript中,當用戶被通知他們的會話即將超時。然後他們可以選擇擴展它。如果他們沒有做出選擇,彈出窗口會自動關閉,瀏覽器會重定向到登錄頁面。它在一段時間裏工作得很好。但是現在我注意到,只有當我在電腦上工作時,它才能正常工作。如果電腦在一整天內無人看管,則在用戶解鎖電腦並重新登錄之前,彈出窗口才會開始倒計時。IE是否進入睡眠模式?

是否有人知道這種行爲,即在計算機長時間無人值守時停止執行JavaScript?

更新:有沒有一種方法來保持選項卡不睡覺?否則,瀏覽器將無法在正確的時間重定向。

+0

你使用'setTimeout'實現了效果嗎? –

+0

我注意到與Chrome相同的行爲,當它在後臺時它以某種方式「凍結」javascript。 – Adi

+0

Rob:是的,我使用了javascript函數setTimeout。 – developer747

回答

0

我會建議記錄頁面加載時的當前時間,然後每隔10秒調用一次函數,以便檢查時間是否超過x量,發生問題的原因很可能是因爲默認超時函數只在頁面呈現時倒計時。

+0

我不明白你爲什麼在這個問題上投下了一票。它可能會進一步調整,但使用'setInterval'代替日期時間比較的一般想法更加可靠並且回答了這個問題。編輯:打字 – Geekfish

+0

盧卡,這不是我投票給你。 – developer747

+1

我並不關心自己的聲譽,我只是想幫忙:p – Luka

1

setTimeout僅當該選項卡處於活動狀態時才起作用。在一些瀏覽器中,即使更改選項卡也會使其停止計數。所以不僅如果你在電腦上,但如果你不在特定的網頁上,它可能無法正常工作。同樣在具有多任務處理的移動設備上,它肯定會失敗,忘記標籤,應用程序通常會進入暫停模式。 看看這個問題,它提供了相同的解決方案,盧卡與代碼示例:

How can I make setInterval also work when a tab is inactive in Chrome?

,如果你需要顯示你可能想要做傳遞,一個時間兩次檢查,以檢查彈出窗口,一個關閉彈出窗口,使用總時間而不是倒計時。

+0

即使我檢查時間過去了,javascript應該能夠在正確的時間執行,以便能夠將用戶重定向到登錄頁面。如果javascript處於掛起模式,檢查時間不會解決我的問題:( – developer747

+0

)如果頁面未處於活動狀態,則不能重定向,因此您不應期望瀏覽器執行此操作。如果您的間隔類似於每兩秒鐘一次(如果它是一個小的檢查對性能來說不會很昂貴),那麼只要用戶返回標籤,重定向就會發生。 – Geekfish

+0

無論如何,「正確的時間」是指什麼?如果您的擔心是安全的,那麼您應該問自己是否你的服務器也會使會話超時而不受任何javascript調用的影響,如果是這樣的話,我看不到任何安全問題,如果不是的話,那麼你的問題就在別的地方 – Geekfish

相關問題