2016-03-31 9 views
0

Ich arbeite an einer Funktion, die Internetverbindung überprüft (funktioniert gut) und eine Funktion, die die Seite alle 20 Sekunden aktualisiert. Eine andere Funktion, an der ich gearbeitet habe, erkennt, wenn sich der Internet-Status ändert und stoppt die Refresh-Funktion. Ich versuche es so zu machen, wenn das Internet wieder online ist, startet die Refresh-Funktion erneut. Ich habe mehrere Fixes ausprobiert, aber nichts funktioniert.Javascript - Reaktivieren von setInterval nach der Verwendung von ClearInterval von einer Funktion

Hier einige Code:

function checkNetConnection() 
{ 
    var xhr = new XMLHttpRequest(); 
    var file = "http://i.imgur.com/FIKb6D8.png"; 
    var r = Math.round(Math.random() * 10000); 
    xhr.open('HEAD', file + "?rand=" + r, false); 
    try { 
     xhr.send(); 
     if (xhr.status >= 200 && xhr.status < 304) { 
      return true; 
     } else { 
      return false; 
     } 
    } catch (e) { 
     return false; 
    } 
} 

function modalCheck() 
{ 
    var status = checkNetConnection(); 
    if(status == false) { 
     document.getElementById('mymodal').style.display = "block"; 
    } else { 
     document.getElementById('mymodal').style.display = "none"; 
    } 
} 

var int1 = setInterval(modalCheck, 7000); 

function refreshPage() 
{ 
    var state = checkNetConnection(); 
    if(state == false) 
    { 
     clearInterval(int2); 
    } else {      
     location.reload(true); 
     alert("PAGE RELOADED!"); /* Testing purposes! */ 
    } 
} 

var int2 = setInterval(refresh, 12000); 

Alles funktioniert gut, bis die Internetverbindung wieder online geschaltet wird, dann ist die Refresh-Funktion nicht wieder starten. Das versuche ich zu beheben.

Danke.

+0

Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous- Anruf) –

Antwort

1

Zunächst einmal, Sie nie wirklich die Seite zu aktualisieren.

Ihr Internet-Prüffunktion sollte die Refresh, wie dies stoppen:

function modalCheck() 
{ 
    var status = checkNetConnection(); 
    if(status == false) { 
     document.getElementById('mymodal').style.display = "block"; 

     clearInterval(int2); //Connection lost! DO NOT REFRESH 
     int2 = null; //So the next if statement can detect whether the interval is going or not 

    } else { 
     document.getElementById('mymodal').style.display = "none"; 

     if(!int2) { //So interval isn't doubled up! 
      int2 = setInterval(refresh, 12000); //Connection regained! 
     } 
    } 
} 

Zweitens Ihre Seite wahrscheinlich nicht aktualisiert, da die refresh() Funktion nicht vorhanden ist:

setInterval(refresh, 12000); //should be "refreshPage" 

That sollte alles sein! Hoffe, dass dein Projekt gut läuft!

+1

Danke Kumpel! Funktioniert perfekt. Ja, ich habe etwas älteren Code kopiert, deshalb wurde Refresh falsch benannt. – clintgx