Javascript 从内容脚本访问选项页localStorage

Javascript 从内容脚本访问选项页localStorage,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试编写一个简单的chrome扩展,但在尝试从我的内容脚本“auto.js”访问options.html的本地存储时遇到了一些困难 从我收集的信息(谷歌搜索和阅读Chrome令人困惑的文档)来看,这只能通过以下方式实现: chrome.runtime.sendMessage & chrome.runtime.onMessage.addListener 内容脚本“auto.js”: “options.js”中的我的侦听器: 问题是我的VAR数量&鞋号从未设置为html本地存储中的“

我正在尝试编写一个简单的chrome扩展,但在尝试从我的内容脚本“auto.js”访问options.html的本地存储时遇到了一些困难

从我收集的信息(谷歌搜索和阅读Chrome令人困惑的文档)来看,这只能通过以下方式实现:

chrome.runtime.sendMessage & chrome.runtime.onMessage.addListener
内容脚本“auto.js”:

“options.js”中的我的侦听器:

问题是我的VAR
数量
&
鞋号
从未设置为html本地存储中的“返回”值


在我的js控制台中没有给出错误,我不确定如何调试它。非常感谢您的反馈。

这是因为sendMessage之后的代码会在触发sendMessage之后立即运行。它们已设置,但不会等待响应,而是在您需要它们的时间之后设置。我在这里也有同样的问题。为了解决这个问题,你可以把任何你想要的函数放进去

chrome.runtime.sendMessage({localstorage: "qty"}), function(response){
    var quantity = response.qty;
}
为了查看是否已设置,请测试以下内容:

chrome.runtime.sendMessage({localstorage: "qty"}), function(response){
    var quantity = response.qty;
}

alert("waiting for a second, to make sure that response is ready ...");
alert("Not it is set:" + quantity);

您正在编写
var quantity=response.qtyvar
。这将创建一个与全局变量同名的局部变量。但这是一个不同的变量。存储它的内存将在sendMessage完成后立即释放,因为这只是一个本地作用域

var
留在发送消息中

此外,您还缺少这些全局变量上的分号

var quantity   = "";
var shoe_size  = "";

除此之外,您还可以在sendMessage回调函数内的内容脚本“auto.js”中使用
console.log
。它将降落在加载该脚本的任何网页的控制台中。

更喜欢
chrome.storage
()而不是
localStorage
,因为它可以直接用于内容脚本。我尝试按照您的建议使用警报,但它是空白的。我确信我遗漏了一些明显的东西。好吧,在
var quantity=response.qty
若要查看是否得到响应,必须首先解决此问题。收到回复后,看看我的答案
chrome.runtime.sendMessage({localstorage: "qty"}), function(response){
    var quantity = response.qty;
}

alert("waiting for a second, to make sure that response is ready ...");
alert("Not it is set:" + quantity);
var quantity   = "";
var shoe_size  = "";