12

我写了一个 Chrome 扩展程序。我不能使用 localStorage.setItemandlocalStorage.getItem来存储和检索,因为后台和浏览器操作在不同的环境中运行 [如这里所示]。

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

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

这产生了以下错误:

未捕获的类型错误:无法读取未定义的属性“本地”

我究竟做错了什么?

4

2 回答 2

17

确保已在清单文件中声明了所有必要的权限。"storage",在你的情况下。

一般来说,以下步骤应该可以解决明显未定义的 Chrome API 的问题:

  1. 阅读您正在使用的 API 的文档并熟悉先决条件,通常是清单权限(例如chrome.storage#manifest)。
  2. 通过查看What's new来检查您(用户的)Chrome 版本是否支持 API 。
  3. 检查脚本是否在正确的上下文中运行。大多数 API 仅可用于扩展程序的进程。(chrome.storageAPI 也可以在内容脚本中使用)
  4. 否则,请使用您通常的调试技巧:错别字、变量阴影、...
于 2013-02-27T15:05:06.927 回答
0

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

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

于 2021-02-27T15:09:16.853 回答