影响Firefox扩展中页面加载处理程序的顺序

时间:2012-04-19 22:25:21

标签: firefox-addon pageload

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

1 个答案:

答案 0 :(得分:1)

触发事件侦听器的顺序确实未定义,您不能依赖任何特定顺序。就扩展而言,最好的办法是以这样的方式编写代码,使得您不关心其他扩展是否已经完成。除此之外,您可以选择要附加的事件:

  • chrome-document-global-created/content-document-global-created notifications在刚刚创建窗口时尽可能早地运行 - 但窗口的内容尚不可用。如果您的代码是由窗口的叠加层加载的,那么这个选项显然不是您可以使用的,加载叠加层会在以后发生。
  • 一旦可以访问窗口的DOM,就会发生
  • DOMContentLoaded事件。
  • 一旦所有依赖元素加载,
  • load事件就会发生。
  • 如果您想稍后运行,可以选择在setTimeout(..., 0)事件处理程序中调用load - 保证在所有load事件处理程序之后执行超时。< / LI>