停止浏览器的“厄运的活动指示器”加载彗星/服务器推送iframe中停止浏览器的“厄运的活动指示器”加

2019-05-14 07:59发布

当使用彗星或Ajax的龙拉技术 - 通常使用的iframe。 虽然该iframe正在等待长的连接关闭,浏览器在旋转其活动指示器(进度/负载指示)。

一些网站,例如etherpad.com,设法使它停止。

他们是如何做到的呢?

Answer 1:

挖了一天,并在互联网络的胆量一晚后,这里是我想出了:

  1. 服务器发送的事件 - 非常酷,目前仅在Opera,但可能是HTML5的一部分,其他的浏览器有时可能支持它。 添加新的元素标签与内容类型“应用程序/ x-DOM事件流”,它允许服务器火在客户端DOM事件。 它不应该显示进度指标,因为据我所知。 这也是一个标准的工作草案,而不是像整个IFRAME彗星事情黑客攻击。

  2. XMLHttpRequest的 - 在Firefox和Safari浏览器,但不是在IE浏览器,它可用于长期拉页面加载,使他们出现在各readyStateChange事件来处理片段。 不会显示进度指示器*。 - 见下文评论

  3. 的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/


Answer 2:

对我来说,运行在AJAX请求的setTimeout解决一切。 当我运行的document.ready的要求,我得到了“厄运的活动指示器”。 但随着setTimeout的它不会发生。 (这个修复也适用于Chrome浏览器)。



Answer 3:

就在那你可能需要一些例子的情况下,这家伙没有给出一个解决方案来解决Firefox的问题。 http://www.shanison.com/?p=237



Answer 4:

我有同样的问题,而解决方案是使用,而不是隐藏的iframe阿贾克斯。 因此,而不是在页面的某个地方产生的iframe:

$("#chat .msg_list").prepend('<iframe id="hidden" src="chatFrame?id=$userId" frameborder="0" height="0" width="100%"></iframe>');

我用jQuery的Ajax调用iframe的内容加载到一些格:

$('#chat #chat_comet').load('chatFrame?id=$userId');


文章来源: Stop the browser “throbber of doom” while loading comet/server push iframe