我正在使用备用代码navigator.OnLine
来检查网络连接。它有效,但是,我遇到了一些问题。
如果我连接/断开了 Intranet(企业网络)内的网络,那么我没有任何问题。但是,如果我在家并且连接到我的家庭网络,但没有使用 VPN 连接连接到公司 Intranet,则窗口将冻结 10 秒间隔。我认为这是因为有互联网连接,但服务器无法访问,因为我与 Intranet 断开连接。
这是代码:
function serverReachable() {
// IE vs. standard XHR creation
var x = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" ),
s;
x.open(
// requesting the headers is faster, and just enough
"HEAD",
// append a random string to the current hostname,
// to make sure we're not hitting the cache
"http://16.24.163.33" + window.location.hostname + "/?rand=" + Math.random(),
// make a synchronous request
false
);
try {
x.send();
s = x.status;
// Make sure the server is reachable
return ( s >= 200 && s < 300 || s === 304 );
// catch network & other problems
} catch (e) {
return false;
}
}
我想在你的帮助下取消一个需要一秒钟以上的请求。因此,如果我试图从家里到达 16.24.163.33,并且在 1 (!) 秒后没有收到任何响应,那么取消请求,并在两分钟内重试整个代码。
setInterval(function () {
if (serverReachable()) {
if (timeout === null) {
var changeIt = document.getElementById('change')
changeIt.style.visibility = 'hidden';
timeout = setInterval("refreshIframe()",25000);
}
} else {
clearTimeout(timeout);
timeout = null;
var changeIt = document.getElementById('change')
changeIt.style.visibility = 'visible';
}
}, 900);