1

如果一个插件在它自己的偏好分支之外改变了一个偏好,那么它应该在卸载插件时将它们恢复到之前的状态(不一定是默认状态)。

我想,必须保存当前首选项,然后在卸载时用于恢复。
运行AddonManager.addAddonListener()似乎是一种选择(但连续运行一个进程!)。还有其他选择吗?

在自举插件中,有一个function uninstall() {},但它是如何在覆盖插件中完成的?

关于该主题的其他有用主题(但未完全回答此问题):
Firefox 插件:卸载插件时如何删除首选项?
在用户分支中设置首选项并在卸载时取消设置

更新 通过连续运行一个进程,我的意思是,运行一个监听器/进程,例如一个可能每年发生一次的事件。我已经想到了另一种可能更有效的方法,但由于这是一种假设情况,我没有任何东西可以测试它。

4

2 回答 2

3

使用AddonManager.addAddonListener()是使用老式叠加层附加组件时的正确路径。

but running a process continuously! 当您说侦听器只是添加到侦听器数组中并且没有新进程正在运行时,我不确定您的意思。

于 2014-08-08T20:49:00.140 回答
1

不,您不应该连续运行一个进程,也不应该监听您更改的任何首选项。没有理由这样做。对于您描述的应用程序,您无需知道偏好何时更改。您只需要知道偏好是什么:

  1. 在你改变它之前
  2. 你把它改成什么
  3. 卸载时是什么

您无需跟踪中间更改。因此,没有听众。

卸载时,如果首选项是您更改的值,请将其更改回更改之前的值。如果它是您未设置的某个值,则用户或其他扩展程序更改了它,并且您不应将其更改回安装扩展程序之前的值(即您不应撤消用户手头的操作设置,或通过另一个扩展设置)。

但是,如果您是覆盖扩展,则应使用 AddonManager 添加AddonListener检测您的插件何时已(或将要)禁用/卸载。这样您就可以知道何时应该更改首选项。

自举(无重启)扩展有自己的卸载通知。

附加 SDK 扩展也有自己的方式。

阅读附录 B:安装和卸载脚本可能是个好主意。

这个问题有一些很好的信息:Firefox 插件:卸载插件时如何删除首选项?

于 2014-09-22T04:15:03.730 回答