当使用 Comet 或 Ajax Long Pull 技术时 - 通常使用 iframe。当 iframe 等待长连接关闭时,浏览器正在旋转其 throbber(进度/加载指示器)。
一些网站,例如 etherpad.com,设法让它停止。
他们是如何做到的呢?
在网上查了一天一夜后,我得出了以下结论:
服务器发送事件 - 非常酷,目前仅适用于 Opera,但可能是 HTML5 的一部分,其他浏览器有时可能会支持它。添加内容类型为“application/x-dom-event-stream”的新元素标签,允许Server触发事件客户端DOM。据我了解,它不应该显示进度指示器。它也是一个标准的工作草案,而不是像整个 iframe comet 那样的 hack。
XMLHttpRequest - 在 Firefox 和 Safari 中,但在 IE 中则不然,它可用于长拉页面加载,从而能够处理出现在每个 readStateChange 事件上的片段。不会显示进度指示器*。 -- 请参阅下面的评论
ActiveXObject("htmlfile") - 可在 IE 中用于创建当前窗口范围之外的页面/窗口。这使得进度指示器消失!加载的 iframe 将位于不可见的浏览器中。
有关服务器发送事件的更多信息:
- http://my.opera.com/WebApplications/blog/show.dml/438711
更多关于其他两种技术的信息(也更好地解释了问题):
*http://meteorserver.org/browser-techniques/
更深入地了解每种技术以及更多技术:
- http://cometdaily.com/2007/12/11/the-future-of-comet-part-1-comet-today/
- http://cometdaily.com/2008/01/10/the-future-of-comet-part-2-html-5’s-server-sent-events/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)