Firefox 附加组件:window.addEventListener( "load", init ) 未触发事件

Firefox Add-On: window.addEventListener( "load", init ) not firing event

在Whosebug上找到了类似的帖子,但除了“应该可以”之外,没有给出任何解决方案。

我编写了一个简单的 Firefox 附加组件,大多数情况下都能完美运行。但有时在我重新启动 FireFox 后,它没有。它运行,但它的初始化事件永远不会被触发。代码是:

window.addEventListener( "load", ts_init );
console.log( "TS plugin loaded." );

function ts_init() {
  console.log( "init" );
  // Do other stuff
}

就像我说的,大多数时候它工作得很好,但有时它会加载(我看到“TS 插件已加载。”消息)但加载事件从未被触发(我没有看到“初始化”消息并且插件永远不会被初始化)。重新加载附加组件、刷新页面或重新启动 Firefox 都无济于事。即使我将 init() 函数剥离到 console.log( "init" ) 行,也永远不会触发该事件。我只需要等到它突然再次开始工作——通常是几天后。

代码中没有错误,所以这显然是 FireFox 的问题。有人知道是什么原因造成的吗?

我曾经遇到过同样的问题。这是一个与缓存 AFAIK 有关的问题。 There's also a JQuery Bug Report describing the same issue.

我的解决方案是使用 the pageshow event。链接的 MDN 页面有一个很好的使用示例。我希望它有所帮助! :D