for (var i = 0; i < 5; ++i) {
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
xhr.open('GET', '/Test/LongOperation?p=' + new Date());
xhr.send('');
}
これは単なるデモ (ライブ コードではありません) ですが、コアの問題を示しています。
LongOperation
10秒後に結果を返すメソッドです。
質問:
上記のコード スニペットが実行された直後にユーザーがページから移動しようとすると、IE8 (およびおそらく他の IE) がハングするのはなぜですか? FireFox/Safari はこれらの要求をキャンセルし、別のページへのナビゲーションを許可します。then で置き換える
'i < 5'
と'i < 4'
、IE はハングしません。この醜い IE の動作を回避するにはどうすればよいですか? ブラウザが突然ハングすると、ユーザーは非常に動揺します。