未捕获的TypeError:无法读取chrome扩展中未定义的属性“local”

时间:2013-02-27 13:41:35

标签: javascript google-chrome-extension local-storage google-chrome-storage

我写了一个Chrome扩展程序。我不能用 localStorage.setItemlocalStorage.getItem用于存储和检索,因为后台和浏览器操作在不同的环境[as seen here]中运行。

所以我决定使用Chrome存储空间API:

var storage = chrome.storage.local;
var myTestVar = 'somevar';
var obj = {};
obj[myTestVar] = $("#somevar").val();
storage.set(obj);

产生了以下错误:

  

未捕获的TypeError:无法读取未定义的属性“local”

我做错了什么?

2 个答案:

答案 0 :(得分:10)

确保已在清单文件中声明所有必需的permissions"storage",在您的情况下。

通常,以下步骤应解决显然未定义的Chrome API问题:

  1. 阅读您正在使用的API的文档,并熟悉先决条件,通常是清单权限(e.g. chrome.storage#manifest)。
  2. 查看What's new,检查您(用户)的Chrome版本是否支持该API。
  3. 检查脚本是否在右侧context中运行。大多数API仅适用于扩展程序。 (chrome.storage API也可以在内容脚本中使用)
  4. 否则,请使用您常用的调试技巧:错别字,变量阴影,......

答案 1 :(得分:0)

如果您尝试将应用作为在 Chrome 中打开 HTML 文件的简单 HTML 页面运行,则会出现此错误。

在 Chrome 中正确添加应用程序(作为扩展程序)然后运行它。