XHR リクエストで遊んでいるうちに、2 つの主要なブラウザー (Google の Chrome と Mozilla の Firefox) から XHR リクエストを作成する際に興味深いことがわかりました。リクエストは への簡単なリクエストでしHEAD
たwww.google.ba
:
var xhr = new XMLHttpRequest();
xhr.open('HEAD' , 'www.google.ba', true);
xhr.onreadystatechange = function (aEvt){
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 304) {
console.log('Connected');
} else {
console.log('No net');
}
}
};
xhr.send();
接続がないときに XHR リクエストを作成しようとすると、両方のブラウザーで readyState 4 とステータス 0 が返されます。再接続した後、両方のブラウザからの XHR リクエストの作成が成功しました。
しかし、ここに問題があります。再度切断してリクエストを行った後、Chrome は 9 ミリ秒後に readyState 4 とステータス 0 を返しましたが、Firefox はある種の保留状態のままで、ネットが戻るのを待ちました。13 秒後に再接続すると、リクエストは正常に処理されました。13秒経ってもFirefoxでステータス0になりませんでした。これらの大きな違いと、Firefox でこの動作を防ぐ方法を説明できる人はいますか?
Chrome からのスクリーンショット:
Firefox のスクリーンショット:
編集:
Firefox はオフライン モードを検出できないようですwork offline
。ブラウザーで選択した場合にのみ、Chrome と同じ結果が得られます。Chrome と同じ結果を得る方法はありますか?