iPad JavaScript计时器停止运行检测睡眠模式

iPad JavaScript timer stop running detecting sleep mode

本文关键字:检测 模式 运行 JavaScript 计时器 iPad      更新时间:2023-09-26

我正在开发一个将在主屏幕上添加书签的网络应用程序(网站),它运行计时器/秒表,但如果你锁定iPad,它就会停止JavaScript等。检测iPad何时进入睡眠模式/唤醒的最佳方法是什么,以及如何恢复计时器?

我尝试过Blur、onload、onunload和Visibility API之类的事件,有什么想法吗?

我正在使用HTML5,所以尝试将计时器值存储在本地存储中,但不确定这是否是最好的方法,有什么想法或代码示例吗。。?

感谢

您使用的计时器不是可靠的计时器(对不起Kelli)

如果你看一下代码,它基本上是这样做的:

var seconds = 0;
setInterval(function () {
    seconds += 1;
    console.log(seconds);
}, 1000);

CCD_ 1和CCD_。它们可以很容易地在每一次滴答声中倾斜100毫秒。如果JavaScript忙于处理其他事件,它可能会出现更大的偏差。如果你的浏览器休眠了你的JavaScript事件循环,它将完全停止。你无法检测到简历,而且你的计时器完全歪斜了。

为了解决这个问题,请使用本机Date的轮询方法来测量时间,只有是准确的。

// new Date creates a `Date` object with the current timestamp
var start = new Date(), now;
setInterval(function () {
    now = new Date(); // poll new current time
    console.log(now.getTime() - start.getTime());
}, 1000); // change to 100ms

有一个小的警告:setInterval仍然倾斜。所以你可能会看到时间每隔一段时间就会增加2秒或0秒。要解决这个问题,请将轮询次数增加到100ms。小提示:getTime以毫秒为单位测量,这对于秒表来说非常好;)


使用轮询方法,您的计时器将始终可靠。如果你睡觉和不睡觉,计时器就会恢复。它将跳转到当前时间。

只要你还记得start,你就很好。