use*_*121 2 javascript iphone ipad
我正在开发一个网络应用程序(网站),它将在主屏幕上添加书签,它运行一个计时器/秒表,但如果你锁定iPad,那么它会停止JavaScript等等.检测iPad何时进入的最佳方式是什么?睡眠模式/唤醒以及如何恢复计时器?
我尝试过诸如Blur,onload,onunload和Visibility API之类的事件吗?
我正在使用HTML5,所以尝试将计时器值存储在本地存储中,但不确定这是否是任何想法或代码示例的最佳方法..?
谢谢
你正在使用的计时器不是一个可靠的计时器(抱歉Kelli)
如果你查看代码它基本上这样做:
var seconds = 0;
setInterval(function () {
seconds += 1;
console.log(seconds);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
setInterval并且setTimeout是不可靠的用于定时.它们很容易在每个刻度上偏差达100ms.如果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
Run Code Online (Sandbox Code Playgroud)
有一个小问题:setInterval仍然存在偏差.因此,您可能会看到时间每隔一段时间跳跃2秒或0秒.要解决此问题,请将您的轮询次数增加到100毫秒.次要注意:getTime以毫秒为单位的测量值,这对于秒表非常有用;)
使用轮询方法,您的计时器将始终可靠.如果您睡觉并且没有睡觉,计时器将会恢复.它会跳到当前时间.
只要你记得start你很好.
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |