gpt4 book ai didi

javascript - iPad JavaScript 计时器停止运行检测 sleep 模式

转载 作者:行者123 更新时间:2023-11-29 17:13:17 26 4
gpt4 key购买 nike

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

我已经尝试过 Blur、onload、onunload 和 Visibility API 等事件,有什么想法吗?

我使用的是 HTML5,因此尝试将计时器值存储在本地存储中,但不确定这是否是最佳方法,任何想法或代码示例..?

谢谢

最佳答案

您使用的计时器不是可靠的计时器(抱歉,Kelli)

如果您查看代码,它基本上是这样做的:

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

setIntervalsetTimeout 的计时可靠。它们每个刻度可以轻松地偏移 100 毫秒。如果 JavaScript 非常忙于处理其他事件,它可能会更加倾斜。如果您的浏览器休眠您的 JavaScript 事件循环,它将完全停止。您无法检测到简历,并且您的计时器完全不正确。

要解决这个问题,请使用使用 native 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 秒。要解决此问题,请将轮询次数增加到 100 毫秒。小提示:getTime 以毫秒为单位测量,这对秒表来说非常有用 ;)


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

只要您记得开始就可以了。

关于javascript - iPad JavaScript 计时器停止运行检测 sleep 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com