首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从内容脚本访问选项页面localStorage

从内容脚本访问选项页面localStorage
EN

Stack Overflow用户
提问于 2013-03-29 13:18:43
回答 2查看 854关注 0票数 3

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

根据我收集到的(谷歌搜索和阅读Chrome令人困惑的文档),这只有可能使用:

代码语言:javascript
运行
复制
chrome.runtime.sendMessage & chrome.runtime.onMessage.addListener

内容脚本auto.js:

代码语言:javascript
运行
复制
var quantity   = ""
var shoe_size  = ""

function addToCart() {

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

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

我在“options.js”中的听众:

代码语言:javascript
运行
复制
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse){

  if(request.localstorage == "qty")
    sendResponse({qty: localStorage.qty});
  else if(request.localstorage == "size")
    sendResponse({size: localStorage.size});
  else
    sendResponse({});
});
...

问题是我的变量quantity & shoe_size从未被设置为从html本地存储‘返回’的值。

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

EN

Stack Overflow用户

发布于 2014-04-26 06:34:29

在sendMessage回调函数中使用前面的var编写var quantity = response.qty;。这将创建一个与全局变量同名的局部变量。但它是一个不同的变量。一旦sendMessage完成,存储它的内存就会被释放,因为这只是一个局部作用域。

var留在sendMessage内部。

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

代码语言:javascript
运行
复制
var quantity   = "";
var shoe_size  = "";

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

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15697763

复制
相关文章

相似问题

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