首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome扩展本地存储异地访问

Chrome扩展本地存储异地访问
EN

Stack Overflow用户
提问于 2016-07-13 20:25:00
回答 1查看 3.3K关注 0票数 0

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

代码语言:javascript
复制
localStorage[myVarName] = value;    

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

代码语言:javascript
复制
myGottenVariable = localStorage[myVarName];

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

代码语言:javascript
复制
 chrome.windows.create({url:LocalURL}}

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

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

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

我的问题是,实现我想要的结果的最简单的方法是什么?在处理很多chrome扩展API时,我很快就会犯错误:所以理想的选择应该是尽可能的干净和简单。这就是我喜欢以下语法的原因:

代码语言:javascript
复制
localStorage[myVarName] = value;   

有没有什么简单的方法可以修改它来方便地访问所需的内容?这两个页面实际上是否在相同的存储空间中,但在该目录中的不同位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-13 20:33:06

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

要实现您想要的功能,您可以使用chrome.storagechrome.storage由后台页面/内容脚本共享。对于您的情况,您可以将数据保存在内容脚本中,并在创建的窗口中检索它(通过内容脚本)。

代码语言:javascript
复制
chrome.storage.local.set({ key: value });
chrome.storage.local.get(key, function (result) {
    console.log(result.key);
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38351687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档