在扩展脚本中使用chrome.storage api - 数据是否按页面URL命名?

时间:2013-02-24 07:02:34

标签: google-chrome google-chrome-extension

我正在使用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之类的网址上匹配内容脚本,并且数据在该网页的多个加载中正确保留。但是,当我加载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"
  ]
}

1 个答案:

答案 0 :(得分:0)

问题在于:

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

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