2

我是用jsonp做跨域彗星请求的,“加载中”的状态真的很烦人。

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

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

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

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

提前致谢!

4

2 回答 2

2

如果您在页面完成加载开始您的第一个请求,您应该能够避免加载指示器。

$(function () {
    setTimeout(function () {
        $.jsonp(...)
    }, 1000);
});
于 2010-09-19T05:12:54.990 回答
1

据我所知,无论您为什么拥有它,都无法使用 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、新的FlockEpiphany 2.30.2、luakit , 和uzbl )

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

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

有限的支持:

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

明显不支持:

  • Opera(截至 11.01.1190,不支持)
  • Camino(截至 2.0.5,仍然基于 Gecko 1.9.0 (Firefox 3.0))
  • Arora(从 0.10.2 开始,继承了 WebKit 的 CORS API,但有一个导致请求失败的错误)
  • 旧的,基于 Mozilla 的 Flock(基于 Gecko 1.9.0 (Firefox 3.0))

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

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

这是关于 CORS 工作原理的 MDC 页面。

于 2010-09-19T05:04:59.573 回答