グローバルタイマーを持つサードパーティの JavaScript を見ています。タイマーは、セッションの有効期限が切れてから 5 分以内になるとモーダル アラート ボックスでユーザーに警告するために使用され、マウス クリックまたはキーストロークによりタイマーがリセットされます。
タイマーは OnLoad 中に設定されます。2 番目のタイマーを追加したかったのですが、モーダル アラート ボックスが表示されている間に 2 番目のタイマーが期限切れになると、動作が予測できないことに気付きました。簡単にするために:
var myFunkyTimer1;
var myFunkyTimer2;
function myOnLoadFunction() {
// alert in 10 seconds
myFunkyTimer1 = setTimeout(function(){alert("Get Funky!")}, 10000);
// alert immediately after user clicks ok
myFunkyTimer2 = setTimeout(function(){alert("GET RANDOM!")}, 11000);
}
これは IE8 では問題なく動作します。ただし、IE9 では、ページの読み込み後 10 秒後に最初の警告ボックスが表示されますが、[OK] をクリックするまで 1 秒以上待つと、2 番目の警告ボックスは 2 ~ 11 秒後まで表示されません。
この問題は回避できますが、IE9 の setTimeout で同様の問題が発生したことがあるかどうか、およびモーダル ポップアップ ウィンドウの背後にあるタイマーをランダム化していることを Microsoft が知っているかどうか、興味がありました。