我是Firefox附加组件开发的新手,并且混淆了哪些类型的浏览器对象/ API暴露给附加代码。 我搜索并阅读了很多教程,所有这些都没有回答我的困惑。 例如,我有一些问题。
请提供任何好的资源,可能是教程,api参考或任何好书。
答案 0 :(得分:2)
这应该回答你的前两个问题:https://developer.mozilla.org/en/Code_snippets/On_page_load。通常的方法是使用一个简单的XUL覆盖覆盖浏览器窗口,该覆盖只会加载一个脚本(或者也可能是两个,jQuery)。该脚本将load
事件处理程序附加到浏览器窗口 - 在浏览器窗口完成加载之前,您不应该执行任何操作。在load
事件监听器中,您在浏览器中为DOMContentLoaded
个事件注册了一个监听器,这意味着无论何时加载页面都会收到通知。
对于jQuery,最“复杂”的部分是其他扩展也在同一浏览器窗口的上下文中运行。所以你不能以通常的方式使用jQuery - 它注册可能与其他扩展的变量冲突的全局变量$
。相反,您将扩展的功能封装在一个对象中,该对象具有与扩展名称相关的唯一名称:
var myExtension = {
$: jQuery.noConflict(true),
init: function() {
..
},
onPageLoad: function(event) {
var doc = event.originalTarget;
var element = this.$("#foo", doc);
...
}
}
window.addEventListener("load", function() { myExtension.init(); }, false);
这里我将jQuery的$
函数作为对象的属性而不是全局变量。您可以稍后将其应用于特定文档,只需将该文档指定为第二个参数。