在处理 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 相同的结果?