2016-03-31 119 views
0

我正在研究檢查互聯網連接的功能(正常工作)以及每20秒刷新一次頁面的功能。我一直在處理的另一個功能是檢測互聯網狀態何時發生變化並停止刷新功能。我試圖讓它工作,所以當互聯網重新聯機時,刷新功能再次啓動。我已經嘗試了多個修復程序,但沒有任何工作。Javascript - 從函數中使用clearInterval後重新激活setInterval

下面是一些代碼:

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

一切工作正常,直到互聯網連接恢復聯機,然後刷新功能不會再次啓動。這正是我想要解決的問題。

謝謝。

+0

可能重複[如何返回來自異步調用的響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-打電話) –

回答

1

首先,你永遠不會停止刷新頁面。

你的網絡診斷功能應停止刷新,像這樣:

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! 
     } 
    } 
} 

其次,你的頁面可能不刷新,因爲refresh()功能不存在:

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

那應該都是!希望你的項目進展順利!

+1

謝謝隊友!完美的作品。是的,我複製了一些舊代碼,這就是爲什麼刷新錯誤。 – clintgx

相關問題