1

我在 Firefox 扩展开发方面的经验非常有限(阅读XUL School,编写了几个非常简单的扩展)。

我现在需要一些 Firefox XPCOM 对象不具备的功能,即运行外部进程并读取其标准输出。似乎这可以使用Protozilla来完成。所以我的问题现在变成了在我的 XPI 中包含这个外部 XPCOM 对象,以便我的扩展可以使用它。

我应该明确我的问题不是如何构建 XPCOM 对象,因为我已经有了他们的构建,如果我需要更改某些东西,我已经有了他们的 makefile。我的问题是:我现在该怎么办?我的扩展树看起来像

/
-->chrome/
-->-->content
-->-->-->browserOverlay.js
-->-->-->...
-->-->locale
-->--> -->zh-CN
-->-->-->-->browserOverlay.dtd
-->-->-->-->browserOverlay.properties
-->-->-->...
-- >-->skin
-->-->-->...
-->defaults/
-->-->preferences/
-->-->-->my_extension.js
-->modules/
--> -->common.js
-->chrome.manifest
-->install.rdf

我应该在哪里包含 XPCOM 文件?我需要做些什么来告诉 Firefox 有一个新的 XPCOM 对象可用吗?

4

3 回答 3

4

来自 Mozilla 开发者中心,

XPCOM 组件

Firefox 在扩展中支持 XPCOM 组件。您可以使用 JavaScript 或 C++(使用 Gecko SDK)轻松创建自己的组件。

将所有 .js 或 .dll 文件放在components/目录中 - 它们会在安装扩展后第一次运行 Firefox 时自动注册。

https://developer.mozilla.org/en/building_an_extension

于 2010-08-08T15:17:54.930 回答
0

您可以使用nsIProcess启动进程,将其写入已知位置,然后使用nsIFile从该文件中读取。

于 2010-08-08T16:17:22.890 回答
0

Protozilla 来源于:http ://mozilla-enigmail.org/ipc/你可以在那里找到启用了 xulrunner 的二进制文件,它应该允许你调用外部进程。

该代码已包含在 Mozilla 代码库中(10 年后,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=68702http://hg.mozilla.org/ipccode/),但不是据我所知,在 Firefox 4 中可用。

于 2011-05-30T20:03:39.917 回答