2015-12-08 47 views
4

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

我刚刚完成了我正在处理的应用程序上的时间跟踪功能,该应用程序由setInterval驱动。这一切都奏效了,直到我开始最小化窗口并在稍后再回来时,才发现时间已经增加了窗口在屏幕上的时间的一小部分。

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

有没有一个简单的选择,我可以交换出来的时间单位是否真正被尊重?

+0

当窗口最小化时,Javascript会继续在后台运行。它甚至可以操纵DOM。这可能是您的代码的问题。我们可以看到它吗? – magreenberg

+0

如果我选择的重复无法解决您的问题,请针对您的问题的不同情况进行更具体的评论,然后我可以重新打开您的问题。如果它*解决了你的问题,快乐编码! – apsillers

+0

@magreenberg现在的问题是,当页面不可见时,现代浏览器限制'setInterval'每秒至多运行一次(左右)。 – apsillers

回答

2

这似乎是一些浏览器中的一项功能,例如在Chrome中,处于非活动状态/在后台的选项卡允许超过1000毫秒。 你可以阅读关于它here

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