0

我正在使用 chrome.storage api,它应该允许我们在不需要后台页面的情况下访问用户的数据存储:

https://developer.chrome.com/stable/extensions/storage.html

该扩展在任何特定页面上都可以正常工作,但似乎数据的存储方式使得在为具有不同 URL 的页面加载扩展时无法访问数据。

基本获取数据代码:

var key = 'commonKey';
chrome.storage.sync.get(key, function(items) {console.log(items);}

我正在匹配http://test.com/ABC之类的 URL 上的内容脚本,并且数据在该页面的多个加载中正确地保留。但是,当我加载http://test.com/CDE时,它会获取并设置一组不同的数据(并且不会影响 ABC 页面上加载的数据)。

这里有一些行为是对每个 URL 的数据进行命名空间吗?我查看了文档和其他问题,但找不到任何类似的东西。

清单看起来像:

{
  "name": "Test script",
  "manifest_version": 2,
  "content_scripts" : [
    {
      "matches": ["http://www.test.com/*"],
      "js": ["jquery.min.js", "contentscript.js"]
    }
  ],
  "permissions": [
    "storage"
  ]
}
4

1 回答 1

0

问题出在这里:

var key = 'commonKey';
chrome.storage.sync.get(key, function(items) {console.log(items);}

设置数据时使用 key 代替 'commonKey' 导致数据存储在字符串 'key' 而不是预期的 'commonKey' 下。这加上其余代码中的逻辑导致了上述行为。

于 2013-02-25T08:31:00.657 回答