3

我正在使用 JSONP 进行长轮询,并且 firefox 不断弹出“正在加载”微调器,使页面看起来好像还没有完成加载。有没有办法抑制这种情况?

有人告诉我,Orbited 团队有一些技巧可以抑制这种情况,但是通过 Orbited.js 代码我无法弄清楚它们是什么。任何帮助将不胜感激。

4

2 回答 2

5

这是一个简单的解决方法。您所要做的就是使用 setTimeout 开始您的轮询请求。

这是我使用的一些代码。它使用 jQuery,但我假设您可以弄清楚您需要什么并使用您的库来做同样的事情。

<script type="text/javascript">
  function poll(){
    $.getJSON('/updates', function(json){
      //reconnect since we successfully received data and disconnected
      poll();

      //add something here to do whatever with the recieved data
    });
  }
  /*call the poll function after document has loaded with setTimeout
  if called before the document finishes loading completely it will
  cause a constant loading indication*/
  setTimeout(poll, 1);
</script>
于 2010-12-16T08:18:39.563 回答
2

我没有答案,但我有一个建议的替代方案。其他人刚刚问了类似的问题,这是我的答案

基本上,如果您可以控制服务器,最简单的解决方案是使用跨域资源共享标头来确定跨域 XMLHttpRequest 并在旧浏览器上回退到 JSONP。

我已经为 CORS 提供了一个相当完整的兼容性表(每个支持用户脚本的浏览器),作为我链接到的答案的一部分,以及Wikipedia 上更通用的一个。

于 2010-09-19T05:09:36.907 回答