我的扩展有一个内容脚本,可以从某些页面捕获一些信息,并使用以下内容将它们保存到本地存储中:
localStorage[myVarName] = value; 如果我将以下内容放入我的内容脚本中,则检索存储的值没有任何问题:
myGottenVariable = localStorage[myVarName];在其他地方,我的扩展使用以下命令创建一个新窗口
chrome.windows.create({url:LocalURL}}新创建的窗口是我的扩展的主UI。我希望它做的一件事是检索“myVarName”处的存储值。然而,它是未定义的。
我假设这与本地存储的组织方式有关。我有一种直觉,每个扩展都有自己的存储空间用于本地存储,并且创建的窗口无法访问内容脚本的存储空间。
我尝试从新创建的窗口在本地存储内容,并且检索该内容没有任何问题,这一事实证实了这种直觉。
我的问题是,实现我想要的结果的最简单的方法是什么?在处理很多chrome扩展API时,我很快就会犯错误:所以理想的选择应该是尽可能的干净和简单。这就是我喜欢以下语法的原因:
localStorage[myVarName] = value; 有没有什么简单的方法可以修改它来方便地访问所需的内容?这两个页面实际上是否在相同的存储空间中,但在该目录中的不同位置?
发布于 2016-07-13 20:33:06
localStorage是按域隔离的,这意味着如果新窗口的域与您保存数据的域不同,您将无法获得所保存的内容。
要实现您想要的功能,您可以使用chrome.storage。chrome.storage由后台页面/内容脚本共享。对于您的情况,您可以将数据保存在内容脚本中,并在创建的窗口中检索它(通过内容脚本)。
chrome.storage.local.set({ key: value });
chrome.storage.local.get(key, function (result) {
console.log(result.key);
});https://stackoverflow.com/questions/38351687
复制相似问题