【问题标题】:Firefox Addon: Revert Preference to their original valueFirefox 插件:将 Preference 恢复为其原始值
【发布时间】:2014-08-08 13:25:35
【问题描述】:

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

我想,必须保存当前首选项,然后在卸载时用于恢复。
运行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

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

【问题讨论】:

  • 是的,唯一的方法是检查并存储初始首选项,然后再重新设置,如果您希望它恢复为默认值,那么很容易调用 clear 函数。重置为默认值(顺便说一句,如果没有设置默认值,调用clear 函数将删除该首选项)。函数名称我可能弄错了,可能是 clearPref 或类似的东西。

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


【解决方案1】:

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

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

【讨论】:

  • 为什么addAddonListener 也不能用于引导程序?我没有发现任何问题。
  • @Noitidart 会的,但您并不需要在引导加载项中使用监听器,因为您可以在 bootstrap.js 中实现 uninstall 方法。
【解决方案2】:

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

  1. 在您更改之前
  2. 你把它改成什么
  3. 卸载时的情况

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

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

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

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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2011-12-22
    • 1970-01-01
    • 2013-07-21
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多