我正在使用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"
]
}
答案 0 :(得分:0)
问题在于:
var key = 'commonKey';
chrome.storage.sync.get(key, function(items) {console.log(items);}
在设置数据时使用key代替'commonKey'导致数据存储在字符串'key'下,而不是'commonKey',如预期的那样。加上其余代码中的逻辑导致了上述行为。