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



我正在为firefox for android开发一个自举扩展,我想将一个js文件导入到bootstap.js中(就像在xul扩展中导入一个组件一样)。使用chrome.manifest使用资源alia的经典方法不允许用于自举扩展。我试过Erik Vold的这个代码,但它似乎不起的作用

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

我真的很感激你的帮助,谢谢你。

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

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

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

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

  • chrome.manifest-使用content
  • bootstrap.js-使用带有content chrome URI的Cu.import

我找到了这样的方法:

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

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

    IncludedFile.someFunction;

相关内容

  • 没有找到相关文章

最新更新