我目前正在将Chrome扩展程序转换为Firefox附加组件,并希望复制chrome.storage.sync功能。
但是,无论何时加载项的用户都登录到simple-storage,我都无法找到使用Firefox Sync的Firefox加载项存储的数据是否会自动同步。
鉴于通过后一种方法存储的所有数据都可以在用户配置文件中找到,我认为只要加法项在https://addons.mozilla.org处可用?
非常感谢有关该主题的任何信息。
答案 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"]);
})
最后但并非最不重要的一点是,只有在用户明确同意的情况下才能进行同步,这样做很好,也许是必须的。