问题
I have written a Chrome extension. I cannot use
localStorage.setItem
and localStorage.getItem
for storing and retrieving because background and browser action runs in different environment [as seen here].
So I decided to use the Chrome storage API:
var storage = chrome.storage.local;
var myTestVar = 'somevar';
var obj = {};
obj[myTestVar] = $("#somevar").val();
storage.set(obj);
which produced the following error:
Uncaught TypeError: Cannot read property 'local' of undefined
What am I doing wrong?
回答1:
Make sure that all necessary permissions have been declared in the manifest file. "storage"
, in your case.
In general, the following steps should fix the problem of apparently undefined Chrome APIs:
- Read the documentation of the API you're using and get yourself familiar with the prerequisites, usually manifest permissions (e.g. chrome.storage#manifest).
- Check if your (user's) Chrome version supports the API, by looking at What's new.
- Check if the script is running in the right context. Most APIs are only available to the extension's process. (the
chrome.storage
API can also be used in content script though) - Otherwise, resort to your usual debugging skills: Typos, variable shadowing, ...
来源:https://stackoverflow.com/questions/15113562/uncaught-typeerror-cannot-read-property-local-of-undefined-in-chrome-extensio