Firefox addon 使用新的jpm Firefox引导扩展

Firefox addon 使用新的jpm Firefox引导扩展,firefox-addon,firefox-addon-sdk,jpm,Firefox Addon,Firefox Addon Sdk,Jpm,我正在使用jpm(1.0.5)的最后(或最后)版本之一实现一个Firefox扩展,但该扩展不调用startup()或shutdown()方法。我知道这应该是强制性的,以声明扩展为 <em:bootstrap>true</em:bootstrap> true 在install.rdf文件中,但当我创建名称空间(使用jpm init)时,没有这个文件,而是从package.json中替换了它。在这种情况下,我应该如何修改文件以使用启动和关闭方法工作?您有什么类型的附加组件

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

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

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

您有什么类型的附加组件

听起来像是使用遗留API的XUL/Overlay附加组件。如果是这种情况,那么您必须创建自己的
bootstrap.js
文件。你完成了所有的步骤吗

jpminit
将仅在使用插件SDK时创建引导代码。我不确定使用jpm是否有任何好处,除非您使用新的Addons SDK API创建一个附加组件,也许除了能够从命令行打包并将附加组件提交给AMO之外。jpm的调试/验证检查似乎没有发现很多问题,在基于XUL/Overlay API的加载项中几乎没有问题

也许你已经看过这里了,链接到文档化的骨架

但是请注意,在中,引导扩展不支持
overlay
指令


上面提到的“convert”文档也涵盖了这些主题和其他主题。

在my 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");
}

参考

当使用jpm时,不要修改bootstrap.js请遵循此指南-抱歉,我不理解您的评论…我不是在谈论bootstrap.js(它不是从jpm的最新版本生成的),而是如何使“bootstrable”扩展什么是“bootstrable”?使用twitter引导?您使用的是jpm,因此不必考虑install.rdf或bootstrap.js。你说的bootstrapble是指twitter bootstrap.js/bootstrap.css吗?哦,我想你现在明白了。您在第一个声明中表示您正在使用最新的jpm。但是,您正试图触发启动和关闭事件。你的插件有一个bootstrap.js,但它根本不是你应该处理的事情——强迫自己不要去想它,它会让你困惑。bootstrapj.s完全不同。如果你想在jpm中启动/关闭事件,你应该遵循这个指南-是的,你可以根据我之前评论中的那篇文章从main.js创建启动/关闭事件。试试看,肯定会有用的。在我的例子中,这个插件不是XUL/overlay,而是一个无重启的插件。事实上,我的入口点是“main.js”(使用jpm init自动创建)。如果我使用jpm init创建一个新插件,将developer.mozilla.org/en-US/docs/Extensions/bootstrap.js中的代码插入我的入口点文件并导入所有必要的元素,我就无法处理启动和关闭方法