【问题标题】:Google chrome extension: local storage谷歌浏览器扩展:本地存储
【发布时间】:2011-03-03 07:22:16
【问题描述】:

我正在为 Google Chrome 开发一个扩展程序,但遇到了一些问题。我创建了一个 options.html 页面并将其添加到 manifest.json 文件中。页面显示正常。

我保存了选项,然后返回到应该运行扩展程序的页面。

不幸的是,选项的本地存储返回“null”而不是选项。如果我直接从扩展的 JS 脚本设置本地存储选项,它可以正常工作,但如果它是从选项页面设置的。

知道如何从扩展中的 Javascript 文件中访问 options.html 本地存储值吗?

【问题讨论】:

  • 那你是怎么解决的?我有同样的问题。 options.html使用localStorage,但是内容脚本只知道网站的localStorage,background.js的localStorage是空的……
  • 我已经使用新的存储 API 修复了它:developer.chrome.com/extensions/storage.html
  • 此时,您应该在 Chrome 扩展程序中使用 chrome.storage,而不是 localStorage,除非您特别打算使用内容脚本与特定网站的 localStorage 进行交互。

标签: google-chrome google-chrome-extension


【解决方案1】:

您可以使用任一设置它们

localStorage["var"]=data;

localStorage.var=data;

使用加载它们

var myvar = localStorage.var;

您可以阅读 API here

【讨论】:

  • 真的吗?它总是对我有用,也许它只是暂时的?但至少现在可以了。
  • 嗨,rohan,我也面临同样的问题,您可以发布解决方案吗?
【解决方案2】:

正确的方法是:

if (typeof(localStorage) == ‘undefined’ ) {
  alert(‘Your browser does not support HTML5 localStorage. Try upgrading.’);
}
else {
  try {
    localStorage.setItem(“name”, “Hello World!”); //saves to the database, “key”, “value”
  }
  catch (e) {
    if (e == QUOTA_EXCEEDED_ERR) {
      alert(‘Quota exceeded!’); //data wasn’t successfully saved due to quota exceed so throw an error
    }
  }
  document.write(localStorage.getItem(“name”)); //Hello World!
  localStorage.removeItem(“name”); //deletes the matching item from the database
}

参考:http://html5tutorial.net/tutorials/working-with-html5-localstorage.html

【讨论】:

  • 是的,这是访问 javascripts 的 localStorage 的可靠方式,但是任何支持扩展的 Chrome 版本都将支持 localStorage,因此它是多余的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 2014-07-24
  • 1970-01-01
相关资源
最近更新 更多