Firefox插件:将首选项还原为其原始值

时间:2014-08-08 13:25:35

标签: firefox firefox-addon firefox-addon-restartless

如果加载项更改了自己的首选项分支之外的首选项,那么它应该在卸载加载项时将它们还原回其先前的状态(不一定是默认状态)。

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

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

关于这个问题的其他有用的主题(但没有完全回答这个问题):
Firefox Addon: how to remove preferences when addon is being uninstalled?
Set preferences in the user branch and unset them on uninstall

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

2 个答案:

答案 0 :(得分:3)

使用AddonManager.addAddonListener()是使用旧式叠加插件时的正确路径。

当您说but running a process continuously! the listener is just added to an array of listeners时,我不确定您的意思,并且没有新进程在运行。

答案 1 :(得分:1)

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

  1. 在您更改之前
  2. 您将其更改为
  3. 卸载时的内容
  4. 您无需跟踪中间变化。因此,没有听众。

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

    但是,如果您是叠加层扩展程序,则应添加AddonListener AddonManager,以便检测加载项何时(或将要)被禁用/卸载。这样您就可以知道何时应该更改首选项。

    Bootstrapped (restartless) extensions have their own uninstall notification.

    Add-on SDK extensions also have their own way.

    阅读Appendix B: Install and Uninstall Scripts可能是个好主意。

    这个问题有一些很好的信息:Firefox Addon: how to remove preferences when addon is being uninstalled?