1

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

4

1 回答 1

1

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

  • chrome-document-global-created/content-document-global-created通知在刚创建窗口的最早时间点运行 - 但窗口的内容尚不可用。如果您的代码是由窗口的覆盖加载的,那么这个选项显然不是您可以使用的,加载覆盖会在以后发生。
  • DOMContentLoaded一旦可以访问窗口的 DOM,事件就会发生。
  • load事件在稍后发生,一旦所有依赖元素加载。
  • 如果您想更晚运行,可以选择setTimeout(..., 0)load事件处理程序中调用 - 保证在所有事件处理程序之后执行超时load
于 2012-04-20T12:00:14.013 回答