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

Mil*_*war 9 javascript local-storage google-chrome-extension google-chrome-storage

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

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

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

这产生了以下错误:

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

我究竟做错了什么?

Rob*_*b W 11

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

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

  1. 阅读您正在使用的API的文档,并熟悉先决条件,通常是显示权限(例如chrome.storage#manifest).
  2. 检查你的(用户)的Chrome版本支持的API,通过看什么新鲜事.
  3. 检查脚本是否在正确的上下文中运行.大多数API仅适用于扩展程序.(chrome.storageAPI也可以在内容脚本中使用)
  4. 否则,请使用您常用的调试技巧:错别字,变量阴影,......