我对Firefox扩展开发的经验非常有限(阅读XUL School,写了几个非常简单的扩展)。
我现在需要一些Firefox XPCOM对象无法使用的功能,即运行外部进程并读取其标准输出。似乎可以使用Protozilla完成此操作。所以我的问题现在变成了在我的XPI中包含这个外部XPCOM对象,以便它可以用于我的扩展。
我应该明确我的问题不是如何构建一个XPCOM对象,因为我已经有了他们的构建,如果我需要改变一些我已经有他们的makefile。我的问题是:我现在该怎么办?我的扩展树看起来像
/
- >铬/
- > - >内容
- &GT - → - →; browserOverlay.js
- > - > - > ...
- > - >语言环境
- > - > - > EN-US
- &GT - → - → - →; browserOverlay.dtd
- &GT - → - → - →; browserOverlay.properties
- > - > - > ...
- > - >皮肤
- > - > - > ...
- >默认/
- > - >偏好/
- &GT - → - →; my_extension.js
- >模块/
- > - > common.js
- > chrome.manifest用于
- > install.rdf
我应该在哪里包含XPCOM文件?我是否需要做一些事情来告诉Firefox新的XPCOM对象可用?
答案 0 :(得分:4)
来自Mozilla开发者中心,
XPCOM组件
Firefox支持XPCOM组件 扩展。你可以创建自己的 组件很容易在JavaScript或中 C ++(使用Gecko SDK)。
将所有.js或.dll文件放入
components/
目录 - 它们是 自动注册第一个 时间Firefox在您的扩展后运行 已安装。
答案 1 :(得分:0)
您可以使用nsIProcess启动进程,将其写入已知位置,然后使用nsIFile从该文件中读取。
答案 2 :(得分:0)
Protozilla派生于此:http://mozilla-enigmail.org/ipc/你可以在那里找到xulrunner启用的二进制文件,它应该允许你调用外部进程。
代码已包含在Mozilla代码库中(10年后,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=68702和http://hg.mozilla.org/ipccode/),但据我所知,它在Firefox 4中不可用。