Chrome扩展程序:从内容脚本访问页面HTML5本地存储

时间:2015-01-07 14:46:44

标签: javascript html5 google-chrome google-chrome-extension content-script

我正在尝试从content_script访问网页的localStorage变量,类似于如何从content_script访问网页的cookies

我从content_script访问页面的cookie没有问题。

但是,localStorage.getItem("showDash")localStorage.setItem("showDash", "value")在内容脚本中不起作用。 浏览器似乎无法识别它并引发错误:

Uncaught TypeError: undefined is not a function

为什么localStorage在content_scripts中不起作用? 我可以解决这个问题吗?

manifest.json的一部分:

  "content_scripts": [{
    "matches":    ["https://cms.mmu.edu.my/*"],
    "js":         ["angular.min.js", "jquery.min.js", "page_handler.js"]
  }]

page_handler.js的一部分:

  if (! localStorage.getItem("DashIsOn"))
     localStorage.setItem("DashIsOn", "true");

1 个答案:

答案 0 :(得分:0)

localStorage可在内容脚本中访问,您可以轻松地对其进行测试。在 stackoverflow.com 上打开一个标签(就像这个问题一样),保持活动状态,然后在后台页面脚本/控制台中运行以下代码:

chrome.tabs.query({active:true}, function(tabs) {
    chrome.tabs.executeScript(tabs[0].id, {code: 'alert(localStorage.getItem("se:fkey"));'});
});

您将看到显示Stack Exchange密钥的警报。因此,您的问题必须在代码的另一部分中,或者,也许,您在其他地方而不是在内容脚本中使用localStorage.getItem()我建议您为问题添加更多代码,例如manifest.json文件和完整的content.js脚本。