4

XHR リクエストで遊んでいるうちに、2 つの主要なブラウザー (Google の Chrome と Mozilla の Firefox) から XHR リクエストを作成する際に興味深いことがわかりました。リクエストは への簡単なリクエストでしHEADwww.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 と同じ結果を得る方法はありますか?

4

0 に答える 0