Chrome扩展本地存储从多个位置访问

时间:2016-07-13 12:25:00

标签: javascript google-chrome google-chrome-extension

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

template<class X>
struct Derived: public Base<Derived<X>, X> {

  using Base<Derived<X>, X>::_a;

  /* ... */

};

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

localStorage[myVarName] = value;    

在其他地方,我的扩展程序使用

创建一个新窗口
myGottenVariable = localStorage[myVarName];

新创建的窗口是我的扩展程序的主UI。我希望它做的一件事是在&#34; myVarName中检索存储的值。&#34;但是,它是未定义的。

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

每个域都会隔离

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

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

chrome.storage.local.set({ key: value });
chrome.storage.local.get(key, function (result) {
    console.log(result.key);
});