1

私がやろうとしているのは、インターネット接続を確認することです。接続できない場合は、数回再試行します。現在チェックに使用しているコードはhttps://gist.github.com/fryn/943537であり、最も有望なようです (他のソリューションではうまくいきませんでした)。

私の問題は、インターネットが接続されている場合でも、「serverReachable()」関数が常に false を返すように見えることです。助言がありますか?私は他のソリューションを使用することにオープンです。これは、これまでに得た最も近いものです。

ありがとう!

これが私のコードです:(すべてのアラートはデバッグ目的で存在します)

var attemptCount = 0;

    function onOffLine(){
      alert("start of onOffLine function");
      var z = "N";
      var connectionTest = serverReachable();
      if(serverReachable()){
        alert("found to have connection.");
        document.getElementById("connected").style.visibility = "visible";
        document.getElementById("notConnected").style.visibility = "hidden";
        z = "yes";
        alertMe(z);
      }else if(connectionTest == false && attemptCount < 4){
        document.getElementById("notConnected").style.visibility = "visible";
        alert("No connection, recursing.." + attemptCount);
        attemptCount++;
        setTimeout("onOffLine()", 3000);
      }else if(attemptCount == 4){
        alert("all attempts failed.");
        document.getElementById("notConnected").style.visibility = "visible";
        z = "N";
        alertMe(z);
      }
    }

    function alertMe(z){
      if(z == "N"){
        alert("Browser is loaded;\nInternet not connected");
      }else if(z == "Y"){
        alert("Browser is open and ready");
      }
    }

    function serverReachable() {
      alert("serverReachable() called");
      var x = new XMLHttpRequest;
      x.open('HEAD', '/?' + +new Date, false);
      try {
        x.send();
        var s = x.status;
        return s >= 200 && s < 300 || s === 304;
      } catch (e) {
        return false;
      }
    }
4

0 に答える 0