Firefox SDK简单存储和Firefox同步

时间:2014-04-27 01:35:20

标签: firefox-addon firefox-addon-sdk

我目前正在将Chrome扩展程序转换为Firefox附加组件,并希望复制chrome.storage.sync功能。

但是,无论何时加载项的用户都登录到simple-storage,我都无法找到使用Firefox Sync的Firefox加载项存储的数据是否会自动同步。

鉴于通过后一种方法存储的所有数据都可以在用户配置文件中找到,我认为只要加法项在https://addons.mozilla.org处可用?

非常感谢有关该主题的任何信息。

1 个答案:

答案 0 :(得分:10)

simple-storage未同步。但是你可以轻松地同步它。

它存储storage对象的技巧,根据定义可序列化,作为字符串首选项,并告诉同步服务同步它。

让我们列出首选项syncstorage,并将其标记为可同步。

var self = require("sdk/self");
var prefs = require("sdk/preferences/service");
prefs.set("services.sync.prefs.sync.extensions." + self.id + ".syncstorage", true);

将内容存储到simple-storage时,会将更改反映为syncstorage

var sp = require("sdk/simple-prefs");
var ss = require("sdk/simple-storage");
sp.prefs["syncstorage"] = JSON.stringify(ss.storage);

对于相反的效果,请注意syncstorage进行更改

sp.on("syncstorage", function(prefname){
  ss.storage = JSON.parse(sp.prefs["syncstorage"]);
})

最后但并非最不重要的一点是,只有在用户明确同意的情况下才能进行同步,这样做很好,也许是必须的。