可能重复:
Chrome: timeouts/interval suspended in background tabs?最小的setInterval()在后台标签页/的setTimeout()延迟
是否有setInterval()
和setTimeout()
允许的最小延时作为选项卡上运行时目前不在看?
该代码运行setInterval()
,指定的延迟时间为100ms,并写出实际延迟的时间。它还会报告您何时进入/离开选项卡。
<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>
下面是在Chrome 12.0.742.100输出在Ubuntu 10.04.2 LTS的摘录:
101
101
101
left tab
1001
1000
1004
1003
1002
1000
entered tab
101
101
101
102
101
我尝试了不同的值,延迟了。任何小于1000的值都会导致相同的行为,当您查看不同的选项卡时,会将其升至1000。超过1000的值表现正确。此代码的setTimeout()
版本也会发生同样的情况。
有趣。我可以在Linux上确认Firefox 5中的相同行为。 – tjm
**现场演示:** http://jsfiddle.net/simevidas/gHZSW/ –
此行为出现在Firefox和Chrome中,但不在IE,Safari或Opera中。 –