我的扩展程序有一个内容脚本,可以从某些页面捕获一些信息,并使用以下命令将它们保存到本地存储中:
localStorage[myVarName] = value;
如果我将以下内容放入内容脚本中,则检索存储的值没有问题:
myGottenVariable = localStorage[myVarName];
在其他地方,我的扩展使用创建一个新窗口
chrome.windows.create({url:LocalURL}}
新创建的窗口是我的扩展的主 UI。我希望它做的一件事是检索“myVarName”处存储的值。但是,它是未定义的。
我认为这与本地存储的组织方式有关。我的直觉是,每个扩展都有自己的本地存储空间,并且创建的窗口无法访问内容脚本的存储空间。
我尝试从新创建的窗口本地存储内容,并且检索该内容没有问题,这一事实证实了这种直觉。
我的问题是,实现我想要的结果的最简单方法是什么?在处理大量 chrome 扩展 API 内容时,我很快就会被绊倒:所以理想的选择是尽可能干净和简单。这就是为什么我喜欢以下语法:
localStorage[myVarName] = value;
是否有一些简单的方法可以修改它以允许轻松访问所需的内容?两个页面实际上是否位于同一存储空间中,但位于该目录中的不同位置?
最佳答案
localStorage
每个域都是隔离的,这意味着如果新窗口的域与您保存数据的域不同,您将无法获得保存的内容。
要实现你想要的,你可以使用 chrome.storage
。 chrome.storage
由后台页面/内容脚本共享。对于您的情况,您可以将数据保存在内容脚本中并在创建的窗口中检索它(通过内容脚本)。
chrome.storage.local.set({ key: value });
chrome.storage.local.get(key, function (result) {
console.log(result.key);
});
关于javascript - Chrome扩展本地存储从多个地方访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38351687/