私は毎秒カウントダウンするタイマーを持っています。ユーザーがmyサイトの3〜4つのタブを開くまで有効です。その時点で、最新のタブのタイマーは2倍または3倍になります。私は現在、IE8のバグだけを再現することができます。以前はsetIntervalを使用していましたが、Firefoxでもバグを再現することができました。サイトに複数のタブが開いていると、なぜ私のsetTimeoutがスピードアップするのですか?
私は実際にFBJS(FacebookのJavascript)を使用していますので、いくつかの擬似コードを提供します。
function countDown() {
...
setTimeout(function() { countDown() }, 1000);
}
countDown();
しかし、私が本当に求めているのは、より理論的なことです。私はブラウザがsetIntervalで "キャッチアップ"しようとすることができる知っているが、どのように複数のタブがsetTimeoutのこの動作を引き起こすことができますか?
うわー、関数にランダム化された名前を付けるのがトリックでした!異なるウィンドウ内のJavaScriptが互いに影響を与える可能性はありますか? – lamplighter
奇妙な、そうじゃない?私は、ブラウザーの機能の中で、名前(おそらくサイト+名前)だけで機能を識別し、別のタブ/ウィンドウを区別しないで、どこかでコードを「スムージング」するようなものでなければならないと思います。本当にどこかでバグ報告の価値があるかもしれません。 – chaos
これはPHPなしの代替ソリューションかもしれません:http://stackoverflow.com/questions/6112671/settimeout-speeds-up-with-multiple-tabs/6112864#6112864 – namuol