jsonp彗星悬挂请求会在浏览器上导致丑陋的“加载”状态

我正在使用jsonp来做跨域彗星请求,而“加载”状态真的很烦人。

有没有办法用javascript来抑制这个?

对于那些不熟悉jsonp的人来说,它基本上会注入一个脚本标记,除了在我的情况下,我将请求挂在我的服务器上,直到稍后才返回请求。

在此期间,浏览器将我的请求视为“加载”状态。

我正在使用此: http : //code.google.com/p/jquery-jsonp/

提前致谢!

据我所知,无论你为何拥有它,都无法使用Javascript来抑制加载状态。

但是,跨域COMET至少有一种替代方案,它不会首先触发加载状态。 XMLHttpRequest不设置加载状态,并且根据我的测试,支持跨域XHR的CORS(跨源资源共享)规范得到了很好的支持。

基本上,支持如下:(根据我正在研究的项目的浏览器文档和我自己的测试的混合)

全力支持:

  • Gecko 1.9.1+(Firefox 3.5,SeaMonkey 2.0等测试好的Firefox 3.6.8和SeaMonkey 2.0.7)
  • WebKit(Safari 4 +,Chrome 3+等等。测试在OSX上的Safari 4,WinXP上的Safari 5,Chrome 5.0.375.127(稳定频道), Midori 0.2.7,新的Flock , Epiphany 2.30.2, luakit和uzbl )

未经测试,但应完全支持:

  • Fluid (基于WebKit的MacOS替代Mozilla Prism和Chrome的“创建应用程序快捷方式……”)

有限的支持:

  • Internet Explorer 8(Microsoft实现了一个XDomainRequest()对象,并以安全性为借口,没有实现该标志以通过请求传递凭据和cookie)
  • Sleipnir (支持取决于它嵌入的MSHTML版本)

显然不受支持:

  • Opera(截至11月11日,没有任何支持)
  • Camino(截至2.0.5,仍然基于Gecko 1.9.0(Firefox 3.0))
  • Arora (截至0.10.2,inheritance了WebKit的CORS API,但有一个导致请求失败的错误)
  • 旧的,基于Mozilla的Flock(基于Gecko 1.9.0(Firefox 3.0))

它不是一个完整的列表,但它是每个浏览器都有用户脚本支持我可以找到测试。 如果你需要,我已经花时间在CORS维基百科页面上引用我的资料。

我能想到的最简单的解决方案是测试CORS ,然后再回到JSONP,以便使用现代浏览器的人获得完美体验,使用旧版本的人看到加载状态是不可避免的副作用。

这是关于CORS如何工作的MDC页面。

如果您在页面加载完成 开始第一个请求则应该可以避免加载指示符。

$(function () { setTimeout(function () { $.jsonp(...) }, 1000); });