如果默认情况下,动态创建的首选项会在重新启

时间:2014-08-30 04:30:57

标签: firefox-addon

我在这个分支上创建了一个新分支和pref:

var _branchLive = Services.prefs.getBranch('extensions.rawr@jetpack.');
var _branchDefault = Services.prefs.getDefaultBranch('extensions.rawr@jetpack.');
_branchDefault.setBoolPref('mypref', true);
_branchLive.setBoolPref('mypref', true);

然而,在重新启动浏览器后,pref将被删除。

1 个答案:

答案 0 :(得分:1)

您正在错误地设置默认分支。

var _branchDefault = Services.prefs.getDefaultBranch(null);
_branchDefault.setBoolPref('extensions.rawr@jetpack.mypref', true);

<强>更新
正常的过程是加载项在每次启动时设置默认的pref(在覆盖加载项中通过/defaults/preferences/pref.js或在引导加载项的情况下手动设置)。

除非更改了值,否则Firefox会使用这些默认值,然后Firefox会将更改后的值保存在about:config

因此,在关闭时,只会保存更改的值(由用户通过附加组件的选项或附加组件本身)。

在您的情况下,默认值和设置值相同,因此不会更改任何内容。

试试这个,看看:

// set the default value
var _branchDefault = Services.prefs.getDefaultBranch(null);
_branchDefault.setBoolPref('extensions.rawr@jetpack.mypref', true);

// change the value via addon
var _branchLive = Services.prefs.getBranch('extensions.rawr@jetpack.');
_branchLive.setBoolPref('mypref', false);

另见:How to convert an overlay extension to restartless