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

Firefox插件:将首选项还原为其原始值,firefox,firefox-addon,firefox-addon-restartless,Firefox,Firefox Addon,Firefox Addon Restartless,如果加载项在其自己的首选项分支之外更改了首选项,则应在卸载加载项时将其恢复到以前的状态(不一定是默认状态) 我想,当前的首选项必须保存,然后在卸载时用于恢复。 运行AddonManager.addonListener()似乎是一种选择(但要连续运行进程!)。还有其他选择吗 在引导加载项中,有一个函数uninstall(){},但是在覆盖加载项中是如何实现的呢 关于该主题的其他有用主题(但未完全回答此问题): 更新 连续运行一个进程,我的意思是,运行一个侦听器/进程,例如,一个可能每年发生一次

如果加载项在其自己的首选项分支之外更改了首选项,则应在卸载加载项时将其恢复到以前的状态(不一定是默认状态)

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

在引导加载项中,有一个
函数uninstall(){}
,但是在覆盖加载项中是如何实现的呢

关于该主题的其他有用主题(但未完全回答此问题):

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

使用旧版叠加插件时,使用是正确的选择

我不知道你说的
是什么意思,但是要连续运行一个进程,并且没有新进程正在运行。

使用旧版覆盖插件时,使用是正确的路径


我不知道你说的
是什么意思,但是要连续运行一个进程,并且没有新进程正在运行。

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

  • 在你改变它之前
  • 你把它改成什么
  • 卸载时它是什么
  • 您无需跟踪中间更改。因此,没有听众

    卸载时,如果首选项是您将其更改为的值,请将其更改回更改前的值。如果是未设置的值,则用户或其他扩展将其更改,并且您不应将其更改回安装扩展之前的值(即,您不应撤消用户手动设置或通过其他扩展设置的内容)

    但是,如果您是覆盖扩展,则应添加一个,以便检测何时(或将)禁用/卸载您的加载项。这样,您就可以知道何时应该重新更改首选项

    阅读可能是个好主意


    这个问题提供了一些很好的信息:

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

  • 在你改变它之前
  • 你把它改成什么
  • 卸载时它是什么
  • 您无需跟踪中间更改。因此,没有听众

    卸载时,如果首选项是您将其更改为的值,请将其更改回更改前的值。如果是未设置的值,则用户或其他扩展将其更改,并且您不应将其更改回安装扩展之前的值(即,您不应撤消用户手动设置或通过其他扩展设置的内容)

    但是,如果您是覆盖扩展,则应添加一个,以便检测何时(或将)禁用/卸载您的加载项。这样,您就可以知道何时应该重新更改首选项

    阅读可能是个好主意


    这个问题有一些很好的信息:

    是的,唯一的方法是检查并存储初始的pref,然后稍后再解决,如果您想将其恢复为默认值,则可以轻松调用
    清除
    函数。重置为默认值(顺便说一句,如果未设置默认值,调用
    清除
    功能将删除该pref)。函数名我可能弄错了,可能是
    clearPref
    或类似的东西。是的,唯一的方法是检查并存储初始的pref,然后稍后再重新处理,如果您希望它恢复为默认值,这很容易调用
    clear
    函数。重置为默认值(顺便说一句,如果未设置默认值,调用
    清除
    功能将删除该pref)。函数名我可能弄错了,可能是
    clearPref
    或类似的东西。为什么
    addonListener
    不能用于引导呢?我看不出有任何问题。@Noitidart它会,但在引导加载项中并不需要侦听器,因为在
    bootstrap.js
    中已经有了可以实现的
    uninstall
    方法。为什么
    addonListener
    也不能用于引导?我看不出有任何问题。@Noitidart会的,但在引导加载项中并不需要侦听器,因为已经有了可以在
    bootstrap.js
    中实现的
    uninstall
    方法。