2009-04-09 36 views
1

我想开发一个firefox插件,应该在每次页面加载时执行。可以请某人告诉我使用它的是哪个事件。在Firefox中,当我打开一个新窗口的document.ready被执行,并没有得到执行,当我打开一个新标签:(。 任何帮助表示赞赏。 感谢火狐插件和document.ready

回答

3

本来我是挂钩到DOMContentLoaded,但这花了太长的时间,因为直到Firefox加载页面及其任何iframe的DOM树后才会触发。

Load同样缓慢,因为它需要页面完全加载以及其所有图像

最终,经过这些,以及为nsIWebProgressListener.onLocationChange和其他一些设置XPCOM,我ulti在DOMTitleChanged三方共同解决这样:

appcontent.addEventListener("DOMTitleChanged", events.onPageLoad, true);

(注:DOMTitleChanged似乎火即使在HTML页面没有<title>属性,或具有相等<title>到前一页。)

我不不记得100%为什么我在DOMTitleChanged上解决了这个问题,但我相信这是因为它最适合我的需求 - 基本上,这是最快的方式,无需等待任何东西加载,同时触发就可以获得用户导航的URL每一个可以想象的方式加载一个新的页面...新标签,页面更改,以及其他所有。

唯一的问题是您需要添加代码来手动查找您的加载项覆盖启动代码中的URL,除非您在FF开始在新窗口中加载第一页之前addEventListener(),否则您将添加您的事件监听器来不及可靠地捕获初始页面加载。 (这是因为每次Firefox打开一个新窗口时都会加载一个新的,孤立的插件实例。)