Firefox 附加组件从 background/content 脚本访问弹出脚本?

Firefox add-on access popup script from background/content script?

我正在将我的 Chrome 扩展翻译成 Firefox 扩展。不过我遇到了问题。

我的扩展程序需要存储的数据,以便将扩展程序加载到内容脚本和弹出页面中。在我的 Chrome 扩展中,我对此没有问题。我只是使用 chrome.storage 来传递和检索存储,我可以轻松地在我的内容和弹出脚本中使用它。

对于 Firefox,我很难弄清楚我必须做些什么不同的事情。我知道我不能使用 chrome.storage 而是使用

const storage = require("sdk/simple-storage").storage;

东西,但我需要在内容脚本和弹出页面的脚本中使用它。我研究并发现我不能多次使用 require 函数,所以我的问题是,我可以在弹出脚本和内容脚本之间共享变量吗?我需要双方的存储空间,而且我看不到任何其他方法可以使扩展正常工作。

谢谢。

您使用 message-passing 让主插件的内容脚本相互通信。

两种可能的方法:

  • 如果数据不太大/不影响太多选项卡,请提前发送数据,并在更新发生时下推。这以增加内存占用和写入成本的潜在成本提供了卓越的读取延迟。
  • 按需请求单个数据项。这对于 frequently-written 或大型数据项更好,但代价是每个请求的延迟更高。

您可能还想看看 webextensions。那里也不支持内容存储,但将来可能会支持。