【问题标题】:Firefox Add-on SDK reload extension only upon restartFirefox Add-on SDK 仅在重启时重新加载扩展
【发布时间】:2014-03-14 20:36:24
【问题描述】:

我目前在使用 Firefox 附加 SDK 开发的扩展程序时遇到问题。对于一些基本上下文,扩展使用 sdk 中的 page-mod api 执行内容脚本。在每个内容脚本上,一些额外的 javascript 被注入到页面本身(我们称它们为页面脚本)。为了完成一些复杂的任务,注入页面的 javascript 可以与内容脚本通信,然后依次向扩展的后台进程发出请求。由于扩展的复杂性,当它自动更新时,可能会进入运行相同代码的多个页面脚本在给定内容脚本上运行的状态。

我想知道的是,是否可以强制使用附加 SDK 构建的扩展仅在重新启动时自行更新。这意味着即使在用户重新启动 Firefox 浏览器之前发生自动更新,扩展也不会重新加载。

如果这是不可能的,任何其他解决方案都会很棒。

【问题讨论】:

  • 好的做法是当插件执行关闭过程(它在更新之前执行,基本上:它取消旧版本并安装新版本)时,您应该删除所有注入的内容。如果插件被禁用并重新启用,这增加了好处,它不会使事情加倍等等。如果您在页面中操作了 javascript,则只有一个功能可以将其恢复。在此处查看此插件:ghForkable。在 inject.js 中,它有一个在关机时运行的函数,因此它将一切恢复到原来的样子。

标签: javascript firefox firefox-addon firefox-addon-sdk browser-extension


【解决方案1】:

虽然我同意@Noitidart 的评论,但您可以选择仅在重新启动时从 main.js 注入内容脚本,如下所示:

const { loadReason } = require('sdk/self');
if (loadReason==='startup') {
  //Inject the scripts
}

您必须确保旧版本的内容脚本可以与新的后台脚本通信而不会中断,这将是一个很难测试的问题。有关其他负载原因,请参阅 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多