navigator.OnLine
ネットワーク接続を確認するために代替コードを使用しています。動作しますが、いくつか問題があります。
イントラネット内のネットワーク(企業ネットワーク)に接続/切断されていれば、何の問題もありません。ただし、自宅にいてホーム ネットワークに接続していても、VPN 接続を使用して企業イントラネットに接続していない場合、ウィンドウは 10 秒間隔でフリーズします。インターネット接続があるためだと思いますが、イントラネットから切断されているため、サーバーに到達できません。
コードは次のとおりです。
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;
}
}
私があなたの助けを借りてやりたいことは、1 秒以上かかるリクエストをキャンセルすることです。したがって、自宅から 16.24.163.33 に到達しようとしていて、1 (!) 秒後に応答が受信されなかった場合は、要求をキャンセルし、2 分後にこのコード全体を再試行してください。
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);