2011-04-28 38 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

相关问题