我目前在使用 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/