Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果已连接,如何使用javascript刷新页面?_Javascript_Jquery_Page Refresh - Fatal编程技术网

如果已连接,如何使用javascript刷新页面?

如果已连接,如何使用javascript刷新页面?,javascript,jquery,page-refresh,Javascript,Jquery,Page Refresh,我有一个网页,我希望它每2分钟刷新一次,使用以下代码: location.reload(); 问题是,我假设用户已连接;但是,如果s/he没有联机连接,该页面将失败并提供默认浏览器(无连接错误页面);除非用户手动刷新,否则页面将永远不会刷新 我是否可以使用ping机制来决定是否刷新?您可以使用navigator.onLine来检测网络连接 setInterval(function() { if (navigator.onLine) { location.reload()

我有一个网页,我希望它每2分钟刷新一次,使用以下代码:

location.reload();
问题是,我假设用户已连接;但是,如果s/he没有联机连接,该页面将失败并提供默认浏览器(无连接错误页面);除非用户手动刷新,否则页面将永远不会刷新


我是否可以使用ping机制来决定是否刷新?

您可以使用
navigator.onLine
来检测网络连接

setInterval(function() {
    if (navigator.onLine) {
        location.reload();
    }
}, 120000); /* 120000 ~> 2 minutes */
否则,您可以对同一域资源使用
HEAD
ajax请求,并且仅当响应返回
200/304
状态时才刷新页面,例如

setInterval(function() {

    $.ajax({ 
        url  : "/favicon.ico", /* or other resource */
        type : "HEAD"
    })
    .done(function() {
        location.reload();
    });
}, 120000); /* 120000 ~> 2 minutes */
试试这个

var clrInterval=null;
clrInterval = setInterval(function(){
    $.ajax({
       url:'',data:'',
       success:function(data);{
         if(data=='no-success') {
            // your code if no-success
         } else {
            clearInterval(clrInterval);// clear interval if you get success
         }
       }
    });
},5000);

一种可能是向您的服务器或非常可靠的服务器发送查询,并检查您是否收到答复

navigator.onLine
的问题是,它会告诉浏览器状态,但浏览器可能在没有网络的情况下处于联机状态


请参阅:

您可以使用布尔值:

if (navigator.onLine) {
    //Actions
}

通过AJAX获取页面内容,成功时替换DOM,失败时不替换DOM。或者简单地对您的服务器执行AJAX ping,并在成功发布时
window.location.reload()每两分钟重新加载一个页面必须在ain中处于临界状态。用户希望看到的页面每两分钟重新加载一次,这就像是有史以来最糟糕的用户体验。以前有一个元标记,它在所有浏览器中都可以使用,但你可能从来没有听说过它,因为每个人和他们的祖母都在1995年停止使用它。@techouse我希望你重写你的评论作为答案,以便我接受它作为正确答案:)啊,太晚了。男孩们已经解决了:)完美的解决方案:)的确:非常整洁的代码;但正如其他人所指出的,它不会检测到互联网连接@stackunderflow我提出了两种不同的解决方案。如果ajax失败了怎么办。。。返回的xhr是否未定义。。。这将阻止done()函数执行。。。我说得对吗?