在玩XHR请求时,我发现有趣的事情是从两个主流浏览器(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和status 0。重新连接后 - 从两个浏览器发出XHR请求都成功了。
但事情就是这样,在我再次断开连接并提出请求后,Chrome在9毫秒后返回readyState 4和状态0,但Firefox仍处于某种待处理状态并等待net返回。当我在13秒后重新连接时,请求已成功处理。即使在13秒后我在Firefox上也没有获得状态0。有没有人可以解释这些巨大的差异以及如何在Firefox上阻止这种行为?
似乎Firefox无法检测离线模式,只有当我在浏览器中选择work offline
时才能获得与Chrome相同的结果。有没有办法获得与Chrome相同的结果?