可能重复:
Chrome: timeouts/interval suspended in background tabs?
在您目前没有查看的标签上运行时,setInterval()
和setTimeout()
是否有最低允许延迟时间?
此代码运行setInterval()
,指定的延迟为100毫秒,并写出实际延迟的时间。它还会在您进入/离开标签时报告。
<html>
<body>
<script type="text/javascript">
window.onfocus = function () { document.body.innerHTML += 'entered tab<br />'; };
window.onblur = function () { document.body.innerHTML += 'left tab<br />'; };
var previous = new Date().getTime();
setInterval(function () {
var now = new Date().getTime();
var elapsed = now - previous;
document.body.innerHTML += elapsed + '<br />';
previous = now;
}, 100);
</script>
</body>
</html>
以下是Ubuntu 10.04.2 LTS上Chrome 12.0.742.100输出的摘录:
101
101
101
left tab
1001
1000
1004
1003
1002
1000
entered tab
101
101
101
102
101
我也尝试了不同的延迟值。当您查看其他选项卡时,任何小于1000的值都会导致其被提升到1000的相同行为。超过1000的值表现正常。这段代码的setTimeout()
版本也会发生同样的事情。
答案 0 :(得分:9)
我知道您的示例适用于Chrome,但至少适用于Firefox,来自Firefox 5 Release Notes(在“Firefox中的新功能”下)。
后台标签有setTimeout和 setInterval钳位到1000ms 提高绩效
哦,我刚刚意识到这已经被问过关于chrome的问题,在这里:Chrome: timeouts/interval suspended in background tabs?。这里有一个链接,表明此 在Chrome中也是如此。