为什么浏览器计时器会走偏,在线倒计时如何保持准确
浏览器计时器在于读取时钟,而不是数次数,才能保持准确。计时开始时记下结束时间,之后每次屏幕更新时,用结束时间减去当前时间。计时更新可能会晚到,或在后台标签页中被放慢,但每次页面检查时,这个减法的结果都是正确的。
在线计时器需要计时器或秒表?免费使用为什么数次数会走偏
常见的做法是每秒从计数器里减一。浏览器用重复计时器执行这一步,它要求每隔若干毫秒运行一次函数。但浏览器并不保证时间精确。页面繁忙、设备较慢或标签页被隐藏,都可能让每次计时延迟,而这些延迟会不断累加。每次少算几毫秒的计数器,过几分钟就会明显出错。
隐藏标签页会做什么
浏览器会放慢你没有在看的标签页里的计时器,以节省电量和处理器资源。以 Chrome 为例,它会限制隐藏标签页中重复计时器的运行频率,如果标签页长时间处于隐藏状态,这些计时器的运行会更加稀疏。这样一来,靠数次数的计数器就会落后,这也是按次数计时的倒计时可能晚结束的原因。
改为读取时钟
解决办法是记下计时开始的时间和应该结束的时间。浏览器提供了一个高精度时钟 performance.now(),专门用于测量时间间隔。显示更新时,计时器用结束时间减去当前时间,得出剩余时间。某次更新晚了,数字会暂时略显陈旧,但下一次更新就会纠正过来,因为计算不依赖于运行了多少次。本站的在线计时器正是这样工作的。
暂停时会保存剩余时间。继续时,把结束时间设为当前时间加上剩余时间,因此暂停不会影响计时。
页面还会为倒计时应结束的那一刻单独设置一个计时器。这样即使显示更新有延迟,提示音也不必等到下一次显示更新才响。
为什么显示时间要向上取整
倒计时显示的剩余时间会向上取整到下一个整秒。一个 3 秒的计时器,开始时显示 00:03,运行中依次显示 00:02、00:01,结束时显示 00:00。如果向下取整,最后一秒就会显示成 00:00,感觉像是提前了一秒。厨房里的定时器也是这样显示的。
声音与屏幕
提示音由浏览器的音频系统生成,因此不需要下载任何音频文件。浏览器只允许在用户操作页面之后才播放声音,所以音频会在你按下开始时准备好。设备的音量和静音设置依然有效。
屏幕常亮是可选功能。在浏览器支持的情况下,页面可以请求设备在计时运行期间保持屏幕常亮。标签页隐藏时浏览器会释放这一锁定,因此你回到页面时,页面会重新请求。
秒表的圈时测量什么
秒表会把运行过的各段时间累加起来,暂停则停止累加。总时间是从开始到现在的时间,而每一圈的时间是本圈总时间与上一圈总时间之差。第 1 圈的时间就等于第一次记录的总时间,第 2 圈的时间等于第二次的总时间减去第一次的。屏幕显示到百分之一秒,但计时精度受设备和浏览器限制,因此最后一位数字只能作为近似值参考。如果你要算的是上下班时间而不是秒表,工时计算器可以根据钟点时间完成计算,具体用法见跨夜班次的工作时长。
实用检查
- 在依靠计时器做饭或锻炼之前,先用手表校对一个短计时。测试 30 秒就足以看出设备是否正常。
- 把音量调大,并确认设备没有开启静音。
- 标签页隐藏时计时器仍能保持准确时间,但关闭标签页或重新加载页面会使计时器重置。
- 如果笔记本电脑在倒计时期间进入休眠,醒来后请检查剩余时间,因为休眠期间的表现取决于设备和浏览器。
如何在 fixmint 上操作
- 选择计时器,然后点击 5 分钟 等预设,或直接输入小时、分钟和秒。
- 点击开始。切换标签页后时间依然准确。重新加载页面会使计时器重置。
- 如果浏览器提供该选项,勾选计时运行时保持屏幕常亮。
- 需要记圈时,选择秒表,点击开始,然后每段时间点一次圈。
- 在依靠计时器做饭或锻炼之前,用手表测试一个 30 秒的计时。
边界情况
- 时钟调整。 倒计时测量的是经过的时间,而不是挂钟时间,因此夏令时切换不会影响它。
- 长时间计时。 几个小时的计时依然准确,但要检查这期间设备是否进入了休眠。
- 多个计时器。 每个计时器都有自己的结束时间,因此两个标签页中的两个计时器互不干扰。
快速问答
为什么后台标签页里的计时器会变慢? 浏览器会放慢隐藏标签页中的重复计时器,因此靠数次数的计时器会落后。读取时钟的计时器则不受影响。
我回到标签页时,计时还准确吗? 准确。它会根据保存的结束时间显示剩余时间。
圈时和总时间有什么区别? 圈时是距离上一圈的时间,总时间是从秒表开始以来的时间。
由 AI 辅助翻译自英文原文。
评论
还没有评论。快来抢沙发。


