2011-04-28 44 views
0

基本上我正在做的是設置一個計時器註銷用戶過了一個小時後,但只有當用戶不活動,所以我想重新啓動計時器後,用戶做了任何活動(滾動,按鍵,mousemove,點擊)事情是,定時器不會重置或別的什麼這就是爲什麼在註銷功能,我想知道定時器實際上重置,這就是爲什麼我想知道計時器通過的時間。如何知道setTimeout剩下多少時間?

我正在使用JavaScript,任何幫助嗎?

+1

這不是通往事物的方式。您應該讓服務器上的會話超時。 – 2011-04-28 07:52:26

+0

我將如何重置計時器呢? – Shaheer 2011-04-28 07:58:27

回答

2

如果這是一個「功能」 - 確保使用Javascript,但如果安全是您的目標,請使用服務器端,毫無疑問。

要編碼一些東西來跟蹤每一個可能發生的小變化,滾動,點擊,焦點,按鍵等,以確定用戶是否「閒置」,這將是一個很大的麻煩 - 所以這是一個主意,使用像erichydns idleTimer,jQuery插件:http://www.erichynds.com/jquery/a-new-and-improved-jquery-idle-timeout-plugin/


編輯:這將是更適合你:http://paulirish.com/2009/jquery-idletimer-plugin/

演示版這裏可以實時顯示用戶是否「空閒」或不是http://paulirish.com/demo/idle-timer

+0

嗨感謝您的評論,插件是好的只有一個問題,它民意調查服務器,我必須儘量減少服務器請求是否有js的替代? – Shaheer 2011-04-28 08:05:57

+0

啊我已經更新了答案 – 2011-04-28 08:16:56

+0

這一個看起來不錯,讓我檢查,如果這個作品再次謝謝你:) – Shaheer 2011-04-28 08:50:14

0

您可以使用下面的代碼克拉的setTimeout的:

var t = setTimeout(myFunction,100000); 
clearTimeout(t); //clear the timeout 

如果你想知道多少時間離開了,那麼你必須算秒左右;)

+0

我這樣做正是 '代碼 功能reset_interval(){ \t 如果 {// 警報( 'F')(定時器!= NULL); currTime = new Date(); clearTimeout(timer); // clearInterval(timer); timer = null; //第二步:再次執行定時器
timer = setTimeout(auto_logout,timeBeforeLogOut); //完成了定時器
} }' – Shaheer 2011-04-28 07:55:35

+0

那麼你的錯誤是在其他地方的復位;)clearTimeout是做它的方式。有用。 – 2011-04-28 07:58:31

+0

是肯定不知道在哪裏:( – Shaheer 2011-04-28 08:50:52

相關問題