使用新的jpm Firefox

时间:2016-04-19 14:19:16

标签: firefox-addon firefox-addon-sdk jpm

我正在使用jpm(1.0.5)的最后一个(或最后一个)版本之一实现Firefox扩展,但扩展不会调用startup()或shutdown()方法。我知道将扩展名声明为

是必须的
<em:bootstrap>true</em:bootstrap>

进入install.rdf文件,但是当我创建了我的命名空间(使用jpm init)时,没有这个文件,它被替换为package.json。在这种情况下,我应该如何修改文件以使用启动和关闭方法?

2 个答案:

答案 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