代码之家  ›  专栏  ›  技术社区  ›  DougN

强大的自动刷新网页

  •  3
  • DougN  · 技术社区  · 14 年前

    我有许多网页需要每分钟自动刷新一次。使用meta刷新或一些javascript很容易完成。(是的,整个页面都需要刷新——很多内容都在变化)。

    但是,它需要尽可能的健壮。如果Web服务器暂时停机或出现网络故障,它将无法刷新,然后会出现404错误等,并永久卡在错误页上。

    我能想到的唯一选项是将整个页面宿主在一个iframe中,并让父页面上的一些脚本刷新框架页面。框架应该是不可见的,因此窗口的任何大小调整都需要调整iframe的大小。

    是否有更简单、更优雅的解决方案?(由于时间限制,使用flash/air/silverlight也不是一个选项)。

    3 回复  |  直到 13 年前
        1
  •  5
  •   Reboot    14 年前

    您可以使用Ajax加载页面的新内容。如果您的页面是在服务器端生成的,那么您可以省略正文周围的HTML,只输出其内容。然后,您可以用Ajax接收新的主体,并用替换页面的现有主体 body.innerHTML = request.responseText . 在Ajax回调中,您可以执行各种错误处理,甚至可以忽略任何错误,然后重试Ajax请求。

    <html>
    <head>
    <script type="text/javascript">
    function doRequest() {
        var request = new XMLHttpRequest();
        request.onreadystatechange = function() {
            if (request.readyState == 4) {
                if (request.status == 200)
                     body.innerHTML = request.responseText;
                doRequest(); // restart the request
            }
        }
        request.open("get", "", true);
        request.send(null);
    }
    </script>
    <body onload="doRequest()">
    Page content...
    </body>
    </html>
    
        2
  •  2
  •   Galen    14 年前

    谷歌对Gmail使用iframe方法。谷歌的解决方案不会出错。

        3
  •  -1
  •   Umar Adil    13 年前

    也可以使用jquery加载方法。