2

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

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

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

4

2 回答 2

1

你有什么类型的插件?

听起来像是使用遗留 API 的 XUL/Overlay 插件。如果是这种情况,那么您必须创建自己的bootstrap.js文件。您是否完成了将覆盖扩展转换为无重启的所有步骤?

jpm init只有在使用 Addons-SDK 时才会创建引导代码。除非您使用新的 Addons-SDK API 创建附加组件,否则我不确定使用 jpm 有什么好处,除了可能从命令行打包和提交附加组件到 AMO 的能力。jpm 的调试/验证检查似乎没有发现很多问题,在基于 XUL/Overlay API 的附加组件中几乎没有。

也许你已经看过这里了?引导扩展,它链接到有文档的骨架bootstrap.js

但请注意,在chrome.manifestoverlay中,引导扩展不支持该指令。

这些和其他主题也包含在上面引用的“转换”文档中。

于 2016-04-24T10:04:50.827 回答
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

于 2016-04-27T15:48:17.887 回答