我有一个无需重新启动的 Firefox 扩展,其中有一个用于某些决策的数组。该数组的元素可能会随着时间的推移而改变。
目前,我的 bootstrap.js
文件调用另一个 .js
文件中存在的各种函数。这个数组位于这些函数之一内。
我试图弄清楚如何重组我的代码,以便在安装后可以更新此数组(而不是整个扩展)。
我想到的是;将该数组提取到一个单独的 .js
文件中,并计划在安装后“更新”数组时交换它。
但是我还是不明白该怎么做。我理解的方式是,我将我的附加组件捆绑为 .xpi
它被安装,然后可以进行部分升级吗?
我不想为此推送另一个.xpi
。我认为这也会让用户意识到扩展已经更新。由于数组更新可能很频繁,因此对于每周左右发生的用户更新来说,这看起来真的很奇怪。
我可以通过 API 来执行此操作,该 API 将获取更新的数组并将其交换到代码中(对现有数组执行 .push
操作)吗?基本上,我希望它对用户来说是不可见的并且也是轻量级的。
我怎样才能以更好/正确的方式做到这一点?如果我要求的东西目前无法实现,请告诉我。
最佳答案
当 xpi 进行新安装时,您包含在 xpi 中的任何内容都将被更新。
正如您提到的,更新会很频繁,您可以从远程端点获取数组。这可以是 json 文件,也可以是您认为更合适的其余调用。为了提高性能,您可以从远程端点获取数组,将其存储在用户配置文件目录中,然后仅根据某个有效期(例如每周或两周)再次获取它。
请注意,在这种情况下,如果您的扩展程序需要通过 AMO 分发,则审核过程可能需要一些额外的步骤,例如包括隐私政策,禁止对数组内容使用 eval。
关于javascript - 如何在无需重新启动的 Firefox 扩展中交换数组文件?是不是更新数组元素而不是整个扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104000/