クロムが呼び出しに対して正確ではないという既知の問題に遭遇しましたsetInterval()
。シンプルなタイマーを表示する次のコード (jsfiddle: http://jsfiddle.net/periklis/j6AU8/ ) を検討してください。
<span id = "time_left"></span>
<script>
seconds = 0;
minutes = 10;
hours = 0;
setInterval(function () {
if (seconds >= 1) {seconds--;}
else {
if (seconds == 0 ) {seconds = 59;}
if (minutes >= 1) {minutes--;}
else {
if (minutes == 0) {minutes = 59;}
if (hours >= 1) {hours--;}
else {hours = 0;}
}
}
min = minutes.toString();
sec = seconds.toString()
if (min.length == 1) {min = "0" + min;}
if (sec.length == 1) {sec = "0" + sec;}
document.getElementById("time_left").innerHTML = hours + ":" + min + ":" + sec;
}, 1000);
</script>
クロム (28.0.1500.52) を使用して、同じスクリプトを 2 つのタブ (フォーカスのあるタブと非表示のタブ) で開きました。しばらくして、非表示のタイマーに切り替えると、タイマーが数秒遅れています。周期が 1 インチより大きい場合、たとえば 2 または 3 の場合も同様です。
上記のリンクによると、クロムは 1 インチ未満の呼び出しに対してのみ同様の動作を示すはずです。この問題を回避する方法 (jquery ではなく純粋な js) はありますか?