Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox addon 默认情况下,重新启动时会删除动态创建的首选项_Firefox Addon - Fatal编程技术网

Firefox addon 默认情况下,重新启动时会删除动态创建的首选项

Firefox addon 默认情况下,重新启动时会删除动态创建的首选项,firefox-addon,Firefox Addon,我创建了一个新分支,并在该分支上创建了pref,如下所示: var _branchLive = Services.prefs.getBranch('extensions.rawr@jetpack.'); var _branchDefault = Services.prefs.getDefaultBranch('extensions.rawr@jetpack.'); _branchDefault.setBoolPref('mypref', true); _branchLive.setBoolPre

我创建了一个新分支,并在该分支上创建了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将被删除。

您设置的默认分支不正确

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);

另请查看此处:

True如果不是默认值,它将持续存在。但是我正在尝试将默认值持久化,也许我应该写入
/defaults/preferences/pref.js
?要将默认值持久化,您可以尝试将其设置为不需要的临时值,然后将其更改为需要的值。。。但问题是什么呢?您必须在每次重新启动时设置它。一旦代码被写入加载项,加载项代码将不会在下次重新启动时更改!是的,将其设置为不需要的值没有意义,我希望使默认值保持不变,即使是默认值。我不知道你想做什么。是否希望在卸载加载项后保留默认值?这将违反AMO的规定。是否希望在每次重新启动后保留默认值?这是毫无意义的。由于用于设置默认值的代码位于加载项内,因此每次重新启动时它都会运行,每次重新启动时都会进行设置。通过设置持久默认值,您将一无所获。即使在overlay插件中,默认值也会在每次重新启动时重新读取和设置。Firefox不保存默认的prefs。如果您想要持久的pref,则必须将其设置为普通pref(非默认)。默认pref与卸载时删除无关,因为它们无论如何都不会保存;)除了每次设置外,没有其他选项。这是正常的过程。您可以设置第一次运行pref,然后不运行alter,但代码仍将驻留在addon中,因此额外的工作和编码无论如何都是没有好处的。让我解释一下:插件有一些代码可以设置默认的pref一次。重新启动时,加载项代码不会更改,因此仍将重复相同的过程。那么,为什么还要麻烦额外的编码呢?