我正在尝试开发一个 Firefox 插件,每当加载页面时都应该执行该插件。有人可以告诉我要使用哪个事件吗?在 Firefox 中,当我打开一个新窗口时, document.ready 会被执行,而当我打开一个新选项卡时,它不会被执行:(。 任何帮助表示赞赏。 谢谢
最佳答案
最初我是卡在DOMContentLoaded
上的,但这花费了太长时间,因为直到 Firefox 加载页面及其任何 iframe 的 DOM 树后才会触发。
Load
同样很慢,因为它需要完全加载页面及其所有图像。
最终,在完成这些操作并为 nsIWebProgressListener.onLocationChange
设置 XPCOM 后和其他一些,我最终选择了 DOMTitleChanged
像这样:
appcontent.addEventListener("DOMTitleChanged", events.onPageLoad, true);
(请注意,即使 HTML 页面没有 DOMTitleChanged
属性,或者具有与上一页相同的 <title>
属性,<title>
似乎也会触发。)
我不记得 100% 为什么我选择 DOMTitleChanged
但我相信这是因为它最适合我的需求——基本上,这是获取用户导航 URL 的最快方法,无需等待任何内容加载,同时以各种可能的方式加载新页面。 .新选项卡、页面更改以及其他所有内容。
唯一的问题是您需要添加代码来手动查找附加组件的覆盖启动代码中的 URL,除非您 addEventListener()
在 FF 开始在新窗口上加载第一页之前,您添加事件监听器的时间可能太晚,无法可靠地捕获初始页面加载。 (这是因为每次 Firefox 打开新窗口时都会加载附加组件的新的独立实例。)
关于jquery - Firefox 插件和 document.ready,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732629/