使用新的 jpm Firefox 引导扩展

Bootstrapped extension with new jpm Firefox

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

<em:bootstrap>true</em:bootstrap>

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

你有什么类型的插件?

听起来像是使用遗留 API 的 XUL/Overlay 插件。如果是这种情况,那么您必须创建自己的 bootstrap.js 文件。您完成 convert an overlay extension to restartless 的所有步骤了吗?

jpm init 将仅在使用 Addons-SDK 时创建 bootstrap 代码。我不确定使用 jpm 有什么好处,除非您使用新的 Addons-SDK API 创建附加组件,除了可能从命令行打包并提交附加组件到 AMO 的能力。 jpm 的 debugging/validation 检查似乎没有发现很多问题,几乎 none 在 XUL/Overlay API 基于附加组件中。

也许你已经看过这里了? Bootstrapped extensions, which links to a documented skeleton bootstrap.js.

但请注意,在 chrome.manifest 中,bootstrapped 扩展不支持 overlay 指令。

上面引用的 "convert" 文档中也涵盖了这些和其他主题。

在我的 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