Javascript - 从函数

时间:2016-03-31 02:58:20

标签: javascript setinterval

我正在开发一个检查互联网连接(工作正常)的功能和一个每20秒刷新一次页面的功能。我一直在研究的另一个功能是检测互联网状态何时发生变化并停止刷新功能。我正在尝试使它工作,所以当互联网重新上线时,刷新功能再次启动。我尝试过多次修复但没有任何工作。

以下是一些代码:

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

一切正常,直到互联网连接重新联机,然后刷新功能才会重新开始。这就是我想要解决的问题。

感谢。

1 个答案:

答案 0 :(得分: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"

那应该是全部!希望你的项目顺利进行!