我正在为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);
});
我非常感谢你的帮助,谢谢。
答案 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
加载程序编写的,所以不要分心)。
chrome.manifest
- 使用content
bootstrap.js
- 使用Cu.import
chrome-URI使用content
。答案 1 :(得分:0)
我找到了这种方法:
var IncludedFile={};
Services.scriptloader.loadSubScript(aData.resourceURI.spec + "content/fileName.js", IncludedFile);
然后你可以访问这样的方法:
IncludedFile.someFunction;