【问题标题】:Firefox SDK simple-storage and Firefox SyncFirefox SDK 简单存储和 Firefox 同步
【发布时间】:2014-04-27 01:35:20
【问题描述】:

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

但是,我无法找到是否会在插件的用户登录到 Firefox Sync 时自动同步使用 simple-storage 的 Firefox 插件存储的数据。

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

任何有关该主题的信息将不胜感激。

【问题讨论】:

标签: firefox-addon firefox-addon-sdk


【解决方案1】:

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"]);
})

最后但并非最不重要的一点是,仅在用户明确同意的情况下进行同步会很好,而且可能是强制性的。

【讨论】:

  • 感谢@paa 的信息!现在,这是有道理的。
  • 谢谢@paa,我在github.com/anaran/JotFirefox/… 有部分工作。我可以看到本地首选项更改和其他插件安装的更改以这种方式出现,但我没有成功合并。相反,我得到Sync.Engine.Prefs WARN DATA LOSS: Both local and remote changes to record: LONG_ID_VALUE
  • @stackunderflow 这只是使simple-storage 可同步的一个技巧。解决合并冲突远不止于此。如果您的 simple-storage 对象很大和/或复杂,请尝试将其同步到较小的独立块中。如果这没有影响,请描述重现错误的确切步骤。
  • 感谢 paa 的澄清。同时,我能够通过issue fix 在 linux 和 windows xp 之间进行合并同步工作。太糟糕的偏好没有在 Firefox for Android 中同步。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多