【问题标题】:chrome.storage.sync not syncing between browserschrome.storage.sync 不在浏览器之间同步
【发布时间】:2014-02-27 19:49:04
【问题描述】:

我正在编写一个 chrome 扩展程序,我希望在其中一些数据在多台计算机之间同步。我的印象是,如果我使用同一个 gmail 帐户“登录”到两个单独的 chrome 浏览器(一个在同一台计算机上运行的虚拟机中),我应该能够使用 chrome.storage.sync.set在一个浏览器上,然后使用 chrome.storage.sync.get 从另一个浏览器检索相同的数据?

我可以使用 get 方法从我运行 set 方法的同一浏览器中检索数据(甚至从单独的隐身窗口),但另一个虚拟机上的相同 get 命令返回一个空对象。

两种浏览器都在“高级同步设置”中设置了“同步所有内容”选项。 两种浏览器都有相同的 chrome 版本:33.0.1750.117 m。

这是我的设置和获取代码:

chrome.storage.sync.set({'foo': 'bar'}, function() {});

chrome.storage.sync.get('foo', function(items) {
    console.dir(items);
});

【问题讨论】:

  • 两个扩展是否使用相同的扩展 ID?
  • 在@abraham 的评论(这很可能是正确答案)的基础上构建一点,当您上传到商店时,扩展 ID 会被永久分配。对于开发中的解压扩展,ID 是从一些可能是不寻常的系统变量合成的,例如解压扩展的目录位置。如果您想知道如何在开发过程中使 ID 稳定,请提出一个单独的问题。

标签: javascript google-chrome-extension


【解决方案1】:

正如@abraham 和@sowbug 都提到的那样,问题是在加载解压缩的扩展时,它们被分配了不同的扩展ID。 我在这里找到了解决方案:https://developer.chrome.com/extensions/packaging#upload 它涉及将扩展页面中的扩展打包到 chrome 中,然后加载生成的 .crx 文件。每次加载此 .crx 文件时,它都将具有相同的扩展 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2012-08-01
    • 2012-02-02
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多