可能重複:
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中。 –