【问题标题】:JavaScript setInterval() and minimized windows [duplicate]JavaScript setInterval() 和最小化窗口
【发布时间】:2016-03-13 22:27:35
【问题描述】:

当您最小化窗口或交换选项卡时,JavaScript 的 setInterval() 方法开始变得难以置信地不可靠。

我刚刚完成了我正在开发的应用程序的时间跟踪功能,该功能由setInterval 驱动。这一切都完美无缺,直到我开始最小化窗口并稍后返回它,才发现时间增加了一小部分,当窗口出现在屏幕上时。

这似乎是浏览器级别的“功能”。

是否有一个简单的替代方法可以将它换成实际使用时间单位的地方?

【问题讨论】:

  • Javascript 在窗口最小化时继续在后台运行。它甚至可以操作 DOM。这可能是您的代码的问题。我们能看到吗?
  • 如果我选择的副本不能解决您的问题,请详细说明您的问题有何不同,我可以重新提出您的问题。如果它确实解决了您的问题,祝您编码愉快!
  • @magreenberg 问题是现代浏览器将setInterval 限制为在页面不可见时每秒最多运行一次(左右)。
  • 哇,我不知道。好消息。
  • 感谢 cmets 的各位。我已经用网络工作者方法交换了 setTimeout 实现,并且至少在 5~ 分钟的时间跨度内,问题看起来可能会得到解决。我会留下一个多小时,看看它是否解决了它。

标签: javascript setinterval


【解决方案1】:

这似乎是某些浏览器的一项功能,例如 Chrome 中的非活动/后台选项卡允许超时时间不小于 1000 毫秒。 你可以阅读它here

常见的解决方案是使用 Web Workers,因为它们不会受到此问题的影响。事实上,这里已经展示了一些这样的解决方案before

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2011-05-27
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多