私がやろうとしているのは、インターネット接続を確認することです。接続できない場合は、数回再試行します。現在チェックに使用しているコードは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;
}
}