1

我正在为 android 的 firefox 开发引导扩展,我想将 js 文件导入 bootstap.js(比如在 xul 扩展中导入组件)。引导扩展不允许使用chrome.manifest 使用资源别名的经典方法。我尝试了 Erik Vold 的这段代码,但它似乎不起作用

function startup(data) AddonManager.getAddonByID(data.id, function(addon) {
// Include some utility functions
include(addon.getResourceURI("includes/scanner.js").spec);
});

我真的很感激一些帮助,谢谢。

4

2 回答 2

4

实际上,在很长一段时间以来,引导加载项content都支持它(首先在 Gecko 8 中,从 Gecko 10 开始,它将自动加载清单,IIRC)。您chrome://yourpackage/content/...不仅可以从资源 URI 加载 js 代码模块(从 Gecko 4、IIRC 开始)。因此,没有什么能阻止您使用 mozilla 风格的代码模块。此外,一些附加组件手动添加resource替换

Erik 编写的东西使用了一个自定义include函数,在相应的 bootstrap.js 中使用loadSubScript. 这也是一种选择。这个方案是在还不能正确使用引导加载项中的 js 代码模块时发明的,例如因为还没有Cu.unload

使用content++Cu.import可能Cu.unload是最简单的方法。

我自己的一个附加组件(Desktop + Android)中的真实示例(附加组件的其余部分是使用自定义 commonjs 样式的require加载器编写的,所以不要因此而分心)。

于 2013-08-12T14:42:55.130 回答
0

我找到了这样做的方法:

    var IncludedFile={};
    Services.scriptloader.loadSubScript(aData.resourceURI.spec + "content/fileName.js", IncludedFile);

然后你可以访问这样的方法:

    IncludedFile.someFunction;
于 2013-08-21T15:09:33.317 回答