0

我正在制作一个在线测验应用程序,它有一个通过 JavaScript 实现的计时器。如果不小心,浏览器因电源故障而关闭,我打算从浏览器关闭的时间点恢复计时器。现在,我只在使用 PHP/AJAX 的数据库中记录测验结束时的时间。如何从用户关闭浏览器的确切时间恢复?

4

2 回答 2

0

您可以订阅窗口卸载事件,但我不能 100% 确定这会在电源故障关闭时触发。

也许更好的解决方案是在测验过程中通过setInterval可以每 1000 毫秒(或无论多么频繁)触发并设置/更新 cookie 的方式来轮询用户。

于 2012-09-03T20:26:12.460 回答
0

电源故障的问题是不会提前通知您断电,因此在电源故障时没有机会保存状态。

因此,要想知道何时断电,唯一的方法就是每隔 N 个时间间隔连续保存状态。然后,当电源熄灭并恢复时,您可以查看上次保存的状态。它不会是完美的,但会是你能做到的最好的。

您保存状态的三个选项是:

  1. 每分钟设置一个cookie(或在其中运行时间计数的某个时间段)。
  2. 将相同的状态保存到本地存储(较新的浏览器)。
  3. 使用常规 ajax 调用(每隔几分钟)将运行时间“自动保存”到您的服务器。

选项 1 和 2 的优点是它都是客户端的,因此保存速度很快并且不会加载您的服务器。选项 1 和 2 的缺点是它们可能会被试图玩弄系统的客户端操纵。

有一个小危险,即使选项 1 和 2 中的本地状态在断电时也可能无法正确保存,但据我所知,大多数浏览器会在保存时将其保存到磁盘,这样即使浏览器以后崩溃,它也是可靠的。

于 2012-09-03T21:14:58.893 回答