【问题标题】:Bootstrapped extension with new jpm Firefox使用新的 jpm Firefox 引导扩展
【发布时间】:2016-04-19 14:19:16
【问题描述】:

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

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

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

【问题讨论】:

  • 使用 jpm 时,不要修改 bootstrap.js,请在此处遵循本指南 - developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/…
  • 对不起,但我不明白你的评论......我不是在谈论 bootstrap.js(它不是​​从 jpm 的最新版本生成的),而是如何使“bootstrable”扩展
  • 什么是“可引导”?使用推特引导程序?您正在使用 jpm,因此您不必考虑 install.rdf 或 bootstrap.js。你所说的 bootstrapble 是指 twitter bootstrap.js/bootstrap.css?
  • 哦,我想现在看看。你在第一次说你正在使用最新的 jpm。但是随后您尝试触发启动和关闭事件。你的插件有一个 bootstrap.js,但它根本不是你应该处理的东西——强迫自己不要去想它,它会让你感到困惑。那 bootstrapj.s 是完全不同的东西。如果你想在 jpm 中启动/关闭事件,你应该遵循这个指南 - developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/…
  • 是的,您可以根据我之前评论中的那篇文章从 main.js 创建启动/关闭事件。试试看,它肯定会奏效。我过去做过。

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


【解决方案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

【讨论】:

    【解决方案2】:

    你有什么类型的插件?

    听起来像是使用旧版 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 指令。

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

    【讨论】:

    • 在我的情况下,插件不是 XUL/overlay,但已经是一个无需重启的插件。事实上,我的入口点是“main.js”(使用 jpm init 自动创建)。如果我使用 jpm init 创建一个新插件,将 developer.mozilla.org/en-US/docs/Extensions/bootstrap.js 中的代码插入我的入口点文件并导入所有必要的元素,我无法处理启动和关机方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多