Javascript 在意外电源故障时恢复JS定时器

Javascript 在意外电源故障时恢复JS定时器,javascript,Javascript,我正在制作一个在线测验应用程序,它有一个通过JavaScript实现的计时器。如果浏览器因电源故障而意外关闭,我打算从浏览器关闭的时间点恢复计时器。现在,我只在测验结束时使用PHP/AJAX在数据库中记录时间。如何从用户关闭浏览器的确切时间恢复?您可以订阅窗口卸载事件,但我不能100%确定这会在断电关机时触发 也许更好的解决方案是在测验过程中通过setInterval轮询用户,它可以每1000毫秒(或无论多么频繁)触发一次,并设置/更新cookie 电源故障的问题是,您不会在断电之前收到通知,因

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

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


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

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

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

保存状态的三个选项是:

  • 每分钟设置一个cookie(或在其中包含运行时间计数的某段时间)
  • 将相同的状态保存到本地存储(较新的浏览器)
  • 通过常规的ajax调用(每隔几分钟)将运行时间“自动保存”到服务器上
  • 选项1和2的优点是,它们都是客户端的,因此保存速度很快,而且不会加载服务器。选项1和选项2的缺点是,它们可能被试图与系统博弈的客户操纵


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

    在断电时不会出现窗口卸载事件。不,断电时不会触发卸载。