2014-10-22 80 views
0

我创建了在线考试样在我的应用程序的应用程序和不要复位超时上刷新

当启动按钮用户点击,我们要为3:00分钟,同时使用

显示计时器setTimeout(func,3*60*1000)

但是当我刷新timout功能重置页面,如何制止这种

在我的应用程序是如何做到这一点,这是一个必须具备的功能。

Javascript或jQuery的东西欢迎

+0

[jquery beforeunload when closing(not leaving)the page?]可能重复?](http://stackoverflow.com/questions/18783535/jquery-beforeunload-when-closing-not-leaving-the-page) – 2014-10-22 03:44:57

+0

Hope这篇文章会有帮助http://stackoverflow.com/questions/3121929/countdown-timer-with-cookies http://stackoverflow.com/questions/13412153/countdown-timer-that-doesnt-reset-when-你刷新页面 – 2014-10-22 03:46:12

回答

0

如果你需要在一个万无一失的方法是,用户不能乱动,你必须设置定时器服务器端来实现这一目标。

如果不是很重要,那么您可以将启动时间存储在localStorage中,并且在页面加载时使用该值从其开始位置恢复定时器。

var oldStartTime = localStorage.getItem('startTime'); 
var startTime = oldStartTime ? new Date(oldStartTime) : new Date(); 
localStorage.setItem('startTime', startTime); 

// you can now use startTime to determine the remaining duration for setTimeout: 

var elapsed = new Date() - startTime; 
var duration = 180000 - elapsed; 

setTimeout(myFunction, duration); 

既然你说这是一个考试,但我认为你希望人们不能作弊。如果是这种情况,那么单单用客户端Javascript完全没有办法做到这一点。用户总是可以在自己的浏览器中“篡改”它。

+0

http://keith-wood.name/countdown.html,这看起来很简单,这个插件是否存在任何问题 – user1934044 2014-10-22 04:09:55

+0

这个jQuery插件是用于将HTML倒计时到指定的时间。它没有“重置”的唯一原因是因为它倒计时到一个特定的时刻;它不像秒表。如果你的学生将在不同的时间开始测试,你仍然需要存储开始时间。 – Semicolon 2014-10-22 04:13:04

+0

明白了,感谢您的解释 – user1934044 2014-10-22 04:19:01