4

可能重复:
Chrome:后台选项卡中暂停的超时/间隔?

在您当前未查看的选项卡上运行时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()这段代码的版本也会发生同样的事情。

4

1 回答 1

9

我知道您的示例是针对 Chrome 的,但至少针对 Firefox,来自Firefox 5 发行说明(在“Firefox 中的新增功能”下)。

背景选项卡已将 setTimeout 和 setInterval 限制为 1000 毫秒以提高性能


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

于 2011-07-03T16:00:13.227 回答