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が1000msにクランプされています


ああ、そして私はちょうどこれがクロムに​​関してすでに尋ねられていることに気づきました、ここで:クロム:バックグラウンドタブで中断されたタイムアウト/間隔?これがChromeにも当てはまることを示すリンクがそこにあります。

于 2011-07-03T16:00:13.227 に答える