1

我正在构建一个Chrome扩展以用于映射页面。用户登录到地图中,并将很多变量从数据库传递到地图中。使用Chrome扩展程序获取变量 - localstorage?

扩展打开时是否有将这些变量传递给它的方法?我在想的localStorage:

作为一个测试,我在地图页面HTML

if (typeof(Storage)!=="undefined") { 
localStorage.setItem("firstname", "hello"); 
localStorage.setItem("lastname", "world"); 
} 

然后在扩展内容我只是想

alert('My name is ' + localStorage.getItem("firstname") + ' ' + 
localStorage.getItem("lastname")); 

我可以看到下面的变量试过这种本地存储在地图页面开发者工具中。但是我在扩展中看到了另外一组。

看起来好像扩展名不能读取这些。有什么办法可以发送这些,还是我需要一种不同的方法?

+0

你可以包括你正在使用检索变量的代码? – spacebean

+0

我刚刚尝试了一种写入存储的不同方式(请参阅编辑的代码),并且它仍然返回“My name is null null”。问题似乎是,如果我查看控制台上的localstorage,该页面是“本地存储> http:// www ...”,并包含变量。该扩展名显示为“本地存储> Chrome扩展名:ghjghgjh ....”,并显示一组不同的变量。所以我想我问的是我可以写入本地存储的扩展从网页? –

+1

您正在使用的localStorage!= http://developer.chrome.com/extensions/storage.html。似乎有一些相当大的差异。 – Johan

回答

1

我想你想要的是在Chrome中传递消息。看到这篇文章https://developer.chrome.com/extensions/messaging.html

的基础将是这样的

chrome.extension.getLocal({method: "getLocalStorage", key: "status"}, function(response) { 
    console.log(response.data); 
}); 

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    if (request.method == "getLocal"){ 
     sendResponse({data: localStorage[request.key]}); 
    }else{ 
     sendResponse({}); } 
}); 

你也可以考虑使用镀铬的存储,而不是本地存储 http://developer.chrome.com/extensions/storage.html

+1

是的,这是唯一的方法。为了安全起见,你不能访问存储或注入网页的变量只有它的dom。除了消息传递之外,你还可以将它存储在dom中,这可能更容易。 –

相关问题