【问题标题】:Javascript continuously refresh page asynchronouslyJavascript不断异步刷新页面
【发布时间】:2015-01-26 22:26:32
【问题描述】:

我创建了一个加载在电视上的仪表板网页。此页面希望每秒刷新一次。

我尝试的第一种方法很好,很简单,并且尊重标准:

<meta http-equiv="refresh" content="1">

这会在 Mac / Chrome 和 iOS / Safari 中产生令人讨厌的闪烁效果,这是不可接受的。

下一个版本效果很好...内容已加载并呈现,没有明显的中断:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>   
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script>
setTimeout(function() {
  $.ajax({
    url: "",
    context: document.body,
    success: function(s,x){
        $(this).html(s);
    }
  });
}, 2000);
</script>

这很好用……内容被加载并呈现,没有明显的中断。但是,这会在几分钟后使任何浏览器(IE、Chrome、Safari、Mobile Safari)崩溃。

有没有办法解决这个问题,不需要我维护两个单独的页面,重新加载部分和内部数据部分?

【问题讨论】:

  • 你能确定浏览器崩溃的原因吗?一个可能的罪魁祸首是页面使用的内存不断增加。您可以使用开发者控制台进行检查。
  • 你真的需要加载整个身体吗?您是否也在同时重新加载相同的轮询脚本(和其他脚本)?

标签: javascript jquery html


【解决方案1】:

使用timeout 来创建“轮询”效果.. 现在您只需每隔2 秒触发一次请求,而无需等待响应。理想情况下,您可以为此使用网络套接字,但现在:

function makeAjax() {
    $.ajax({
        url: "",
        context: document.body,
        success: function(s,x){
            $(this).html(s);
            setTimeout(makeAjax, 2000);
        }
    });
}
makeAjax();

【讨论】:

  • 使用这种方法,您将在每 2 秒后创建一个间隔
  • @Fuzzyma -- 啊,意思是timeout - 漫长的一天。已编辑。
  • 在实现这个时,我看到请求越来越快,然后基本上就像在 F5 键上放一块石头。
猜你喜欢
  • 1970-01-01
  • 2020-10-08
  • 2012-09-06
  • 1970-01-01
  • 2019-10-14
  • 2019-02-01
  • 2013-04-10
  • 1970-01-01
  • 2018-07-14
相关资源
最近更新 更多