Firefox Bootstrapped插件中的默认首选项

时间:2014-06-29 19:00:06

标签: firefox firefox-addon-restartless

Firefox Bootstrapped Addons不会像Overlay Addons那样读取默认首选项 我理解在安装Bootstrapped Addon时需要手动设置默认首选项。

初始安装后,我想设置默认首选项的唯一好处是能够重置首选项(除非FF在别处跟踪它)。

问题是,是否必须在每个startup()上读取和设置默认首选项? 如果是这样,它们将被保存在哪里(即getDefaultBranch()从何处获取数据)?

参考:
How to convert an overlay extension to restartless
A brief guide to Mozilla preferences
Restartless Add-ons Default Preferences
Preferences

1 个答案:

答案 0 :(得分:0)

我已经通过电子邮件给出了答案,我将在此处逐字发布,以便用户受益。

来自Flagfox的开发人员和How to convert an overlay extension to restartless

的作者Dave Garrett
  

在运行时设置的默认首选项无法保存。没有   默认首选项的磁盘缓存。

     

在Firefox启动时,会从各个位置读取默认首选项   进入偏好系统。 (Firefox在omni.ja和插件中有自己的功能   他们的安装文件夹/文件中有他们的。这个分支的副本是   还保留了从prefs.js读取的用户prefs覆盖   进去。设置(用户)prefs会更改prefs中的状态   系统,(最终)记录在prefs.js中(再次,仅限于   保存非默认的pref值)。设置默认首选项更改   prefs系统中的状态,但这不会保存在任何地方。   它们需要在每次启动时加载。对于旧标准默认值   prefs系统,Firefox在每次启动时加载它们。对于   不需要重启的扩展你自己需要这样做。每个插件   startup需要加载默认的prefs。

     

你当然可以使用prefs而不需要默认,但是你可以   必须在整个地方对代码中的默认值进行硬编码。   简单地为无重启插件实现默认的prefs系统是一个   更清洁的解决方案,避免您可能会犯的错误。

     

由于prefs系统只将非默认的首选项存储到磁盘,因此它也可以   一旦它们被放回,大大提高了保存prefs的效率   因任何原因违约。例如,我有一个JSON blob   字符串pref。 (从v5.0开始,它现在相当紧凑)如果用户改变了   通过改变选项中的内容,需要在那里保存什么   对话框,这个JSON blob将完整存储在prefs.js中。如果是用户   然后恢复该更改,他们的JSON blob将恢复为   先前价值。如果这相当于默认值,   然后prefs.js只存储没有值,并使用默认值。这个   从默认的prefs.js开始减少需要加载的内容   案件。实际上,我可以使用prefs API来检测值是否为   目前设置为默认值,我完全绕过打包的加载   JSON用户pref并直接转到完整的JSON文件,在这种情况下我   甚至不需要从prefs系统加载。这是一个优化   这只适用于这种情况,但它是另一种情况   为什么正确使用默认值可能很有用。

关于删除shutdown()

上的默认偏好设置
  

一般情况下,您不需要删除默认首选项   关闭,虽然它可能是一个合理的论点   这是正确的(但可能是一个坏主意)。需要说明的是,有一些   单独的关闭案例要考虑到:

     

1)Firefox关闭+插件关闭:在这种情况下你不应该   执行任何不需要保留数据的关闭。没有必要   当应用程序关闭正在进行时卸载你的东西,它会这样做   你。

     

2)由于插件更新导致插件关闭:在这种情况下你需要   正确卸载你加载的所有内容,以便下一个版本可以   干得好。但是,没有必要担心违约   这里的偏好,一般。将加载新版本   覆盖旧的。 (除非删除了默认值,在这种情况下   那会留在记忆中无所事事的行为。

     

3)由于addon禁用导致插件关闭:保留加载的默认prefs   除了他们占用的微量内存之外,这里什么都没有伤害。   如果你有很多prefs我想卸载它们可能是有保证的,   然而,这不是一个经常会出现的用例。一世   除非你有办法,否则不会担心卸载prefs   太多的prefs或prefs如此之大,以至于你得到了警告   浏览器错误控制台关于它们太大了。 (在这种情况下你   应该解决这个问题)

     

即使在关机时清理默认的prefs可能是个好主意,   删除具有用户pref的默认pref可能会破坏事物。一世   建议只留下他们。

相关问题