現在見ていないタブで実行されているときの最小許容遅延は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()
このコードのバージョンでも同じことが起こります。