我正在制作一个在线测验应用,它有一个通过JavaScript实现的计时器。如果意外,浏览器因电源故障而关闭,我打算从浏览器关闭的时间点恢复计时器。现在,我只在使用PHP / AJAX的数据库测验结束时记录时间。如何从用户关闭浏览器的确切时间恢复?
答案 0 :(得分:0)
您可以订阅窗口卸载事件,但我不能100%确定这将在电源故障关闭时触发。
或许更好的解决方案是在测验过程中通过setInterval
轮询用户,该{{1}}可以每隔1000毫秒(或频繁地)启动并设置/更新cookie。
答案 1 :(得分:0)
电源故障的问题是您不会在电力输出之前得到通知,因此在电源故障时没有机会保存状态。
因此,当电力耗尽时,任何想法的唯一方法是每N个时间间隔持续保存状态。然后,当电源熄灭然后恢复时,您可以查看上次保存的状态。它不会是完美的,但你将是最好的。
您保存状态的三个选项是:
选项1和2的优点在于它是所有客户端,因此快速保存并且不加载您的服务器。选项1和2的缺点是,可以想象它们可能被尝试游戏系统的客户操纵。
即使选项1和2中的本地状态也可能无法在断电时正确保存,但是我知道大多数浏览器在保存时会将其保留到磁盘,以便即使浏览器也可靠后来崩溃了。