当前位置: 首页 > 面试题库 >

加载彗星/服务器推送iframe时,停止浏览器的“厄运之战”

宇文和昶
2023-03-14
问题内容

当使用Comet或Ajax Long Pull技术时-
通常使用iframe。当该iframe等待长时间连接关闭时,浏览器正在旋转它的rob动器(进度/加载指示器)。

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

他们是如何做到的呢?


问题答案:

经过一整天一夜的探索,我得出了以下结论:

  1. 服务器发送的事件-非常酷,目前仅可在Opera中使用,但可能是HTML5的一部分,其他浏览器可能会支持它。添加内容类型为“ application / x-dom-event-stream”的新元素标签,该标签允许 服务器 触发 客户端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/


 类似资料:
  • 问题内容: 我的Selenium Webdriver转到页面并等待该页面完成加载。如果30秒过去,它将超时并且脚本失败。 无论如何,是否要让网络驱动程序在30秒后停止页面加载(例如按浏览器中的“ x”)?这样可以防止驱动程序超时。 我正在使用Chromedriver。 问题答案: 这就是我遇到此问题的方式。在chrome支持之前,我将使用这种方式。 我在Chrome中安装了一个名为“停止加载”的扩

  • 我的selenium webdriver转到一个页面,等待该页面完成加载。如果超过30秒,则超时,脚本失败。 是否需要webdriver在30秒后停止页面加载(如按浏览器上的“x”)?这将防止我的司机超时。 我正在使用ChromeDrive。

  • 我正在开发一个基于云的后端HTTP服务,该服务将公开用于与一些on-prem系统的集成。客户机系统是由外部供应商定制的,它们是带有自己数据库的后端系统。这些系统部署在我们客户的公司中,我们无法访问它们,也无法控制它们。我们向供应商提供我们的API规范,他们实现客户机代码。 我的服务与客户交换的数据格式基于XML,并遵循一定的标准。供应商用不同的编程语言实现他们的客户机系统,随着时间的推移,新的供应

  • 问题内容: 我想通过HTTP将数据推送到浏览器而不杀死django / python应用程序。 我决定使用彗星服务器,在我的应用程序和客户端之间代理请求(尽管我仍然没有真正弄清楚它)。 我研究了以下引擎:轨道彗星ejabberd码头 有没有人有使用这些服务器和部署它们的经验?关于这些主题的任何见解和链接都将很棒。谢谢。 问题答案: 我建议您在divmod中研究Twisted,twisted.web

  • 问题内容: 我正在尝试在客户端动态生成文件时在客户端上显示“掩码”。似乎为此的推荐解决方法(因为它不是ajax)是使用iframe并从onload或done事件中侦听以确定文件从服务器实际发送到客户端的时间。 这是我的角度代码: 这在Firefox中效果很好,但在Chrome中没有运气。我也尝试过使用onload函数: 但是我那里也没有运气。 有想法吗? 问题答案: 不幸的是,如果内容是附件,则无

  • 我正在开发一个连接到服务器的web应用程序,我需要服务器在给定的时间向客户机推送一些信息。 有人会强调这些技术吗(也许还有其他一些推动技术。)这符合我的问题,哪一种情况更适合每一种情况? 非常感谢,我想我在这个领域完全迷失了。