如果加载项更改了自己的首选项分支之外的首选项,那么它应该在卸载加载项时将它们还原回其先前的状态(不一定是默认状态)。
我想,当前的首选项必须保存,然后在卸载时用于还原
运行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
更新 通过持续运行流程,我的意思是,运行一个监听器/流程,例如每年可能发生一次的事件。我已经想到了另一种可能更有效的方法,但由于这是一个假设的情况,我没有任何东西可以测试它。
答案 0 :(得分:3)
使用AddonManager.addAddonListener()
是使用旧式叠加插件时的正确路径。
当您说but running a process continuously!
the listener is just added to an array of listeners时,我不确定您的意思,并且没有新进程在运行。
答案 1 :(得分:1)
不,您不应该持续运行流程,也不应该对您更改的任何首选项进行监听。没有理由。对于您描述的应用程序,您无需知道首选项何时更改。您只需要知道偏好是什么:
您无需跟踪中间变化。因此,没有听众。
卸载时,如果首选项是您更改它的值,请将其更改回更改之前的值。如果它是您未设置的某个值,则用户或其他扩展程序会更改它,您不应将其更改回安装扩展程序之前的值(即,您不应撤消用户手中的某些内容)设置,或通过另一个扩展设置)。
但是,如果您是叠加层扩展程序,则应添加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?