javascript - Firefox Add-on SDK 仅在重启时重新加载扩展

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

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

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

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

最佳答案

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

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

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

关于javascript - Firefox Add-on SDK 仅在重启时重新加载扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415267/

相关文章:

javascript - javascript 对象中多个具有相同值的键

javascript - 将变量传递给 JavaScript 函数

firefox - 更新 Firefox 插件在某些机器上失败

javascript - 尝试在我的 firefox 扩展中创建带有 svg src 的 iframe

javascript - Firefox Extension Addon SDK 合并多个 'Action Buttons'

javascript - elt.lang = 'fr' 不工作

javascript - 从 obj 文件中加载一个 3d 对象,并使用 Three.Js 将其放入相机中

javascript - "ref.off()"是读取数据后与 Firebase 数据库断开连接的正确方法吗?

javascript - Firefox 3.6.18 和 IE Javascript 将行插入表格

javascript - html5 视频无法在 Apple 机器上的 firefox 中播放