使用firefox扩展。我正在尝试从javascript设置首选项并观察一些奇怪的行为。
about:config
中看到更改。但是如果强制终止firefox(使用Ctrl + C),则不会保存首选项。 (无法在我的个人资料中查看prefs.js
中的条目)about:config
切换选项(布尔值)或使用标准的prefwindow prefpane设置首选项时,即使我强制终止firefox,也会保存首选项。如果firefox正常关闭,一切都还可以。但我只是担心如果强制退出(如OS关闭或用户发送kill信号),则用户首选项将丢失!
这是一个自举的插件,我在启动时设置了默认首选项。我有事件监听器来读取用户输入,并设置用户首选项。例如:
const prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
prefs.setBoolPref("extensions.myextension.test.ffterminate", false);
我在这里做错了吗?我应该使用存储而不是首选分支吗?
编辑:在此问题上提出了Mozilla的错误:https://bugzilla.mozilla.org/show_bug.cgi?id=981818
答案 0 :(得分:0)
我认为你没有在默认分支上设置它。
这是你在默认分支上设置pref的方法,所以当重置pref时,它不会自行删除,它会转到这个默认值。我不知道为什么在浏览器强制关闭时会丢失它但尝试设置默认分支:
Services.ps.getDefaultBranch('my_branch_name')['setBoolPref']('myprefname', false);
你可能只是设置非默认分支谎言:
Services.ps.getBranch('my_branch_name')['setBoolPref']('myprefname', false);
注意:如果已经在非默认分支上设置了值,则设置默认值不会更改pref的当前值,只有在重置时,pref才会转到此默认值。因此,当你设置默认值并且它没有改变时,不要混淆。它仍然有效。它确实改变了它,右键单击pref并单击reset以查看它跳转到默认设置的值