在bootstrap.js firefox中包含一个js文件,用于android扩展

时间:2013-08-12 11:48:26

标签: android import firefox-addon firefox-addon-restartless

我正在为firefox for android运行一个bootstrapped扩展,我想将一个js文件导入bootstap.js(比如在xul扩展中导入一个组件)。引导扩展不允许使用chrome.manifest to use a resource alia的经典方法。我尝试了这个Erik Vold的代码,但似乎无法正常工作

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

我非常感谢你的帮助,谢谢。

2 个答案:

答案 0 :(得分:4)

实际上,content is supported在引导附加组件中已有相当长的时间(首先在Gecko 8中,从Gecko 10开始,它将自动加载清单,IIRC)。 您可以从chrome://yourpackage/content/...加载js代码模块,而不仅仅是从resource-URIs(因为Gecko 4,IIRC)。所以没有什么能阻止你使用mozilla风格的代码模块。 另外,还有几个加载项manually add resource substitutions

Erik编写的内容使用a custom include function,使用loadSubScript在相应的bootstrap.js中实现。这也是一个选择。这种方案是在尚未能正确使用自举附加组件的js代码模块时发明的,例如因为还没有Cu.unload

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

我自己的一个附加组件(桌面+ Android)中的真实世界示例(其余的附加组件是使用自定义的commonjs样式require加载程序编写的,所以不要分心)。

答案 1 :(得分:0)

我找到了这种方法:

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

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

    IncludedFile.someFunction;