0

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);
4

0 に答える 0