背景选项卡上的最小setInterval()/ setTimeout()延迟

时间:2011-07-03 15:50:07

标签: javascript settimeout setinterval browser-tab

  

可能重复:
  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()版本也会发生同样的事情。

1 个答案:

答案 0 :(得分:9)

我知道您的示例适用于Chrome,但至少适用于Firefox,来自Firefox 5 Release Notes(在“Firefox中的新功能”下)。

  

后台标签有setTimeout和   setInterval钳位到1000ms   提高绩效


哦,我刚刚意识到这已经被问过关于chrome的问题,在这里:Chrome: timeouts/interval suspended in background tabs?。这里有一个链接,表明此 在Chrome中也是如此。