Javascript 理解Firefox扩展结构
我正在尝试编写一个Firefox扩展,它拦截某个HTTP请求并返回静态内容,而不将请求发送到实际服务器(类似于AdBlock) 我查阅了教程,得到了一个基本的文件布局。我还发现我需要使用和添加一个观察者来完成我想要的事情,我有这方面的示例代码 问题是,我应该把代码放在哪里?我的扩展实际上是什么时候加载和执行的?它是在后台持续异步运行还是按页面视图加载 文档中似乎对此不是很清楚。这个扩展不需要GUI,所以我不需要布局XUL文件(或者我需要?)。我试着编写一些XPCOM组件(我认为我做得不对),在Javascript 理解Firefox扩展结构,javascript,firefox-addon,Javascript,Firefox Addon,我正在尝试编写一个Firefox扩展,它拦截某个HTTP请求并返回静态内容,而不将请求发送到实际服务器(类似于AdBlock) 我查阅了教程,得到了一个基本的文件布局。我还发现我需要使用和添加一个观察者来完成我想要的事情,我有这方面的示例代码 问题是,我应该把代码放在哪里?我的扩展实际上是什么时候加载和执行的?它是在后台持续异步运行还是按页面视图加载 文档中似乎对此不是很清楚。这个扩展不需要GUI,所以我不需要布局XUL文件(或者我需要?)。我试着编写一些XPCOM组件(我认为我做得不对),在c
chrome.manifest
中注册了它,但它似乎没有运行
有人能确切地解释Firefox扩展是如何工作的吗?我应该把实际的JavaScript代码放在哪里来监视请求?还是我完全明白了什么是扩展错误?外接程序、扩展和插件之间有区别吗?关于外接程序、扩展和插件之间的区别,您应该看看。但总的来说,你的想法似乎是正确的 问题是,目前有三种不同类型的扩展:
配置文件中注册它
类别并实现nsIObserver
bootstrap.js
脚本,当扩展被激活时将加载该脚本,该上下文将一直保留在后台,直到浏览器关闭或扩展被禁用。您也可以在无重启扩展中使用XPCOM组件,但必须手动注册它们(通过和)。如果扩展关闭,您还必须注意注销组件。如果您只需要添加一个观察器,那么这是不必要的,它将接受实现nsIObserver
的任何对象,而不仅仅是注册为XPCOM组件的对象。最大的缺点是:大多数MDN示例都是关于经典扩展的,没有解释如何在无重启扩展中进行操作main.js
自动加载,并且能够根据需要加载其他模块。加载后,只要扩展处于活动状态,每个模块都会一直保留。它们运行沙盒,但您仍然可以直接访问XPCOM。但是,您可能会使用内部谢谢,引导扩展似乎就是我想要的。@tangrs:Side-note:Adblock Plus不使用
nsetraceablechannel
,而是使用。有关最小(和引导)内容策略实施的信息,请参阅。