localStorage在chrome.tabs.executeScript中不起作用?

时间:2016-06-09 13:19:32

标签: google-chrome-extension google-chrome-app

我想使用localStorage来保存和使用数据。我可以保存和使用数据,但当我在localStorage中使用chrome.tabs.executeScript时,localStorage始终为空...为什么?

我的代码

chrome.tabs.executeScript({ code: 
    'document.getElementById(":2k.en").onclick = function (){
        alert(localStorage.getItem("Message"));
        document.getElementById(":2i").value = localStorage.getItem("Token");
        document.getElementById(":2k.jl").textContent = "it is OK";
    }'
});

谢谢!

1 个答案:

答案 0 :(得分:0)

@Noam Hacker,你是对的。需要使用Chrome.storage API来存储,检索和跟踪用户数据的更改。使用上述API,您需要在extension manifest中声明storage权限才能使用存储API。

{
"name": "My extension",
...
"permissions": [
"storage"
],
...

}

使用get StorageArea.get(string or array of string or object keys, function callback)回调来从存储中获取一个或多个项目。空列表或对象将返回空结果对象。传入null以获取存储的全部内容。

<强> background.js

此脚本将内容设置为chrome存储

//Set some content from background page
chrome.storage.local.set({"identifier":"Some awesome Content"},function (){
console.log("Storage Succesful");
});
//get all contents of chrome storage
chrome.storage.local.get(null,function (obj){
console.log(JSON.stringify(obj));
});

<强> popup.js

此脚本检索并设置从\到chrome存储

的内容
document.addEventListener("DOMContentLoaded",function (){
//Fetch all contents
chrome.storage.local.get(null,function (obj){
console.log(JSON.stringify(obj));
});
//Set some content from browser action
chrome.storage.local.set({"anotherIdentifier":"Another awesome Content"},function (){
console.log("Storage Succesful");
});
});