2011-07-03 104 views
3

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

+0

有趣。我可以在Linux上确认Firefox 5中的相同行为。 – tjm

+0

**现场演示:** http://jsfiddle.net/simevidas/gHZSW/ –

+0

此行为出现在Firefox和Chrome中,但不在IE,Safari或Opera中。 –

回答