【问题标题】:JSONP Long Polling always loadingJSONP 长轮询总是加载
【发布时间】:2010-03-31 19:32:57
【问题描述】:

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

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

【问题讨论】:

    标签: comet long-polling orbited


    【解决方案1】:

    这是一个简单的解决方法.. 您所要做的就是使用 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>
    

    【讨论】:

    • 这是最好的解决方案,我什至尝试使用 $(document).ready 或 doc.addEventListener("DOMContentLoaded", ...),但除非您等待至少 1 毫秒,否则它将无法工作。欢呼
    【解决方案2】:

    我没有答案,但我有一个建议的替代方案。刚刚有人问了类似的问题,here's my answer

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 2011-04-20
      • 2012-05-25
      • 2013-08-08
      • 2010-11-19
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多