2012-04-19 57 views
1

对于某些Firefox扩展,尽可能早地获取页面内容以进行修改是有意义的,而对于其他扩展尽可能晚(例如,当其他扩展可以用他们的修改)。很明显,总会有一些扩展想要成为“第一”或“最后”,但我很难在网上找到涵盖此内容的材料。对于addEventListener(“load”,...),我只能发现事件处理程序被调用的顺序是未定义的。如果addEventListener没有办法,那么在Firefox扩展中,还有哪些其他选项可以影响处理内容的早/晚?影响Firefox扩展中的页面加载处理程序的顺序

回答

1

事件监听器的触发顺序实际上是未定义的,您不能依赖任何特定顺序。就扩展而言,最好的选择是以这样的方式编写代码,以至于您不关心其他扩展是否已经完成。除此之外,你可以选择附加哪个事件:

  • chrome-document-global-created/content-document-global-created notifications在时间最早可能的点,当刚刚创建的窗口运行 - 但窗口的内容将不会推出。如果代码是通过覆盖窗口加载的,则此选项显然不是您可以使用的,加载覆盖图稍后会发生。
  • DOMContentLoaded事件发生后,窗口的DOM可以被访问。
  • load事件发生后,一旦所有相关元素加载。
  • 如果您希望在稍后运行,可以选择在load事件处理程序中调用setTimeout(..., 0) - 超时保证在所有load事件处理程序之后执行。