2011-07-03 33 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中。 –

回答