我正在尝试开发一个firefox插件,只要页面被加载就应该执行。有人请告诉我使用它的事件。在firefox中,当我打开一个新窗口时,document.ready会被执行,而当我打开一个新标签时,它就不会被执行:(。 任何帮助表示赞赏。 感谢
答案 0 :(得分:3)
最初我正在挂钩DOMContentLoaded
,但这花了太长时间,因为在Firefox为页面及其任何iframe加载DOM树之前它不会触发。
Load
同样很慢,因为它需要页面完全加载以及所有图像。
最终,经过这些,以及为nsIWebProgressListener.onLocationChange
和其他几个人设置XPCOM,我最终确定了DOMTitleChanged
:
appcontent.addEventListener("DOMTitleChanged", events.onPageLoad, true);
(请注意,即使HTML页面没有DOMTitleChanged
属性,或者与上一页具有等效<title>
,<title>
似乎也会触发。)
我不记得100%为什么选择了DOMTitleChanged
,但我相信这是因为它最适合我的需求 - 这基本上是获取用户导航网址的最快捷方式等待加载任何东西,同时按照每种可能的方式触发新页面加载...新选项卡,页面更改以及所有其他内容。
唯一的问题是,您需要添加代码以手动查找附加组件的覆盖启动代码中的URL,除非您在FF开始在新窗口中加载第一页之前addEventListener()
,否则您将添加了您的事件监听器太晚,无法可靠地捕获初始页面加载。 (这是因为每次Firefox打开一个新窗口时都会加载一个新的,独立的加载项实例。)