javascript - Chrome扩展本地存储从多个地方访问

标签 javascript google-chrome google-chrome-extension

我的扩展程序有一个内容脚本,可以从某些页面捕获一些信息,并使用以下命令将它们保存到本地存储中:

localStorage[myVarName] = value;    

如果我将以下内容放入内容脚本中,则检索存储的值没有问题:

myGottenVariable = localStorage[myVarName];

在其他地方,我的扩展使用创建一个新窗口

 chrome.windows.create({url:LocalURL}}

新创建的窗口是我的扩展的主 UI。我希望它做的一件事是检索“myVarName”处存储的值。但是,它是未定义的。

我认为这与本地存储的组织方式有关。我的直觉是,每个扩展都有自己的本地存储空间,并且创建的窗口无法访问内容脚本的存储空间。

我尝试从新创建的窗口本地存储内容,并且检索该内容没有问题,这一事实证实了这种直觉。

我的问题是,实现我想要的结果的最简单方法是什么?在处理大量 chrome 扩展 API 内容时,我很快就会被绊倒:所以理想的选择是尽可能干净和简单。这就是为什么我喜欢以下语法:

localStorage[myVarName] = value;   

是否有一些简单的方法可以修改它以允许轻松访问所需的内容?两个页面实际上是否位于同一存储空间中,但位于该目录中的不同位置?

最佳答案

localStorage每个域都是隔离的,这意味着如果新窗口的域与您保存数据的域不同,您将无法获得保存的内容。

要实现你想要的,你可以使用 chrome.storagechrome.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/

相关文章:

javascript - 带参数调试 javascript 函数

css - chrome 中的第二个 float div 在第一个 div 之前清除

google-chrome - Chrome 扩展扩展主机条目

android - 在 Android Studio 模拟器上更新 Chrome 时,Chrome 崩溃

google-chrome - 扩展页面的资源在发布版本中的停顿时间比本地版本长得多

javascript - Google Chrome 扩展程序可以检测所有脚本何时完成加载吗?

javascript - 我们如何为不同的请求类型编写 Joi 模式?

javascript - Redux reducer : Update object in array by key immutably

javascript - Canvas 未完全覆盖 Chrome 扩展中的网页

javascript - 需要帮助访问 JSON 数组对象