我正在使用jpm(1.0.5)的最后一个(或最后一个)版本之一实现Firefox扩展,但扩展不会调用startup()或shutdown()方法。我知道将扩展名声明为
是必须的<em:bootstrap>true</em:bootstrap>
进入install.rdf文件,但是当我创建了我的命名空间(使用jpm init)时,没有这个文件,它被替换为package.json。在这种情况下,我应该如何修改文件以使用启动和关闭方法?
答案 0 :(得分:1)
你有什么类型的附加组件?
听起来像是使用旧版API的XUL / Overlay插件。如果是这种情况,那么您必须创建自己的bootstrap.js
文件。您是否完成了convert an overlay extension to restartless的所有步骤?
jpm init
仅在使用Addons-SDK时才会创建引导代码。除非您使用新的Addons-SDK API创建附加组件,否则我不确定使用jpm有什么好处,除非是从命令行打包并向AMO提交附加组件的功能。 jpm的调试/验证检查似乎没有遇到很多问题,基于XUL / Overlay API的附加组件几乎没有。
也许你已经看过这里了? Bootstrapped extensions,链接到记录的骨架bootstrap.js。
请注意,在chrome.manifest中,引导扩展中不支持overlay
指令。
这些和其他主题也包含在&#34; convert&#34;文件,如上所述。
答案 1 :(得分:1)
在我的main.js中,我倾听这样的加载和卸载。
exports.main = function(options, callbacks) {
if (options.loadReason == "install" || options.loadReason == "startup") {
factory = new Factory(AboutDualView);
factory = new Factory(AboutEPFViewer);
registerRemotePages();
}
}
exports.onUnload = function (reason) {
if (reason == "shutdown") {
factory.unregister();
RemotePageManager.removeRemotePageListener("about:dualview");
RemotePageManager.removeRemotePageListener("about:epfviewer");
}
};
function registerRemotePages(){
let DualViewmanager = new RemotePages("about:dualview");
let EPFViewmanager = new RemotePages("about:epfviewer");
}
参考https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK/Tutorials/Listening_for_load_and_unload