你如何同步firefox插件/扩展首选项?

时间:2014-05-05 21:55:47

标签: firefox firefox-addon sync

声明插件的首选项应该在firefox安装中同步的格式是什么?我看到你应该创建一个简短的description services.sync.prefs.sync.extension.frobnaz.foobar,但应该如何在定义插件首选项的package.json中输入?例如,假设我在那里定义了一个偏好:

"preferences": [{"name": "show_xyz",
                 "type": "bool",
                 "title": "Show XYZ",
                 "value": true}]

在firefox的about:config中,这最终会被转换为首选项extensions.<addon id>@jetpack.show_xyz。那么应该如何创建services.sync.prefs.sync.*首选项?

2 个答案:

答案 0 :(得分:1)

您必须通过preferences/service模块以编程方式处理此问题。

var ps = require('sdk/preferences/service');
var addonid = require('sdk/self').id;

var simpleprefs = ps.keys('extensions.' + addonid);

simpleprefs.forEach(function(prefname){
  ps.set('services.sync.prefs.sync.extensions.' + addonid + '.' + prefname, true)
});

答案 1 :(得分:0)

这个家伙在这里同步greasemonkey prefs,我想你可以使用它: https://gist.github.com/LouCypher/3193779

var prefs = Services.prefs;
var prefArray = prefs.getChildList("greasemonkey.scriptvals", {});
for (var i = 0; i < prefArray.length; i++) {
prefs.setBoolPref("services.sync.prefs.sync." + prefArray[i], true);
}