4

在处理 XHR 请求时,我发现从 2 个主要浏览器(谷歌的 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 和 status 0。在我重新连接后 - 从两个浏览器发出 XHR 请求都成功了。

但事情是这样的,在我再次断开连接并发出请求后,Chrome 在 9 毫秒后返回了 readyState 4 和状态 0,但 Firefox 停留在某种挂起状态并等待网络返回。当我在 13 秒后重新连接时,请求已成功处理。即使在 13 秒后,我也没有在 Firefox 上获得状态 0。有没有人可以解释这些巨大的差异以及如何在 Firefox 上防止这种行为?

来自 Chrome 的屏幕截图:

在此处输入图像描述

火狐的截图:

在此处输入图像描述

编辑:

似乎 Firefox 无法检测到离线模式,只有当我work offline在浏览器中选择时,我才能得到与 Chrome 相同的结果。有没有办法获得与 Chrome 相同的结果?

4

0 回答 0