【问题标题】:how to refresh page using javascript if connected?如果已连接,如何使用 javascript 刷新页面?
【发布时间】:2014-12-22 17:41:48
【问题描述】:

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

location.reload();

问题是我假设用户已连接;但是如果碰巧他/她没有在线连接,页面将失败并给出默认浏览器(无连接错误页面);除非用户手动刷新,否则页面永远不会刷新

我可以包含一个 ping 机制来决定是否刷新天气?

【问题讨论】:

  • 通过 AJAX 获取页面内容,成功时替换 DOM,失败时不替换。或者简单地对您的服务器执行 AJAX ping 并在成功问题上window.location.reload();
  • 每两分钟重新加载一个页面必须是临界点。用户希望他们正在查看的页面每两分钟重新加载一次,这就像有史以来最糟糕的用户体验。曾经有一个元标记,它仍然适用于所有浏览器,但你可能从未听说过它,因为每个人和他们的祖母在 1995 年就停止使用它。
  • @techouse 我希望您将您的评论改写为答案,以便我接受它作为正确答案:)
  • 啊,太晚了。男孩们已经解决了:)

标签: javascript jquery page-refresh


【解决方案1】:

您可以使用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 */

【讨论】:

  • 完美解决方案的:)
  • 非常简洁的代码;但正如其他人指出的那样,它没有检测到互联网连接!
  • @stackunderflow 我提出了两种不同的解决方案。
  • 如果 ajax 失败了怎么办...返回的 xhr UNDEFINED... 这将阻止 done() 函数执行...我说的对吗?
【解决方案2】:

一种可能性是向您的服务器或非常可靠的服务器发送查询,然后检查您是否收到回复。

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

见:Detect Internet Connection as in Gmail Javascript

【讨论】:

    【解决方案3】:

    你可以使用布尔值:

    if (navigator.onLine) {
        //Actions
    }
    

    【讨论】:

      【解决方案4】:

      试试这个,

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

      【讨论】:

        猜你喜欢
        • 2012-03-26
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 2021-11-16
        • 2017-05-19
        • 1970-01-01
        • 2019-07-27
        相关资源
        最近更新 更多