61

我正在尝试通过 content_script 在扩展中使用 chrome 存储,但我一直失败

Uncaught TypeError: Cannot read property 'sync' of undefined 

这是我的代码:

testChromeStorage();

function testChromeStorage() {  
    console.log("Saving");
    chrome.storage.sync.set({'value': theValue}, function() {
        message('Settings saved');
    });
    chrome.storage.sync.get("value", function (retVal) {
            console.log("Got it? " + retVal.value);
    });
}
4

5 回答 5

125

您必须在 manifest.json 文件中添加“存储”权限,即:

...
  "permissions": [
    "storage"
  ],
...

有关更多信息,请参阅:https ://developer.chrome.com/extensions/storage

于 2014-09-05T00:35:15.987 回答
13

重新加载扩展

我在我的manifest文件中添加了“权限”键,但我仍然很难解决这个问题。

添加权限后:-

"permissions": [
    "storage"
 ]

使用:chrome://extensions/ 转到您的扩展程序并单击重新加载按钮:-

在此处输入图像描述

于 2017-07-20T19:00:52.830 回答
2

如果有人在 Firefox 上遇到此问题,请注意,它尚不受支持:

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/storage#Chrome_incompatibilities

就我的目的而言,替换chrome.storage.syncchrome.storage.local.

关于 Firefox 的实现状态,有时也可以在这里查看一下:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs#storage

于 2016-01-24T12:43:40.343 回答
1

重启开发服务器

尽管添加了权限并重新加载了扩展,我的同步仍然未定义。

结果我需要重新启动开发服务器才能获取新清单。这是有道理的,因为这个文件没有被监视。嗬!

于 2021-03-18T04:27:26.747 回答
-1

请参阅https://developer.chrome.com/extensions/content_scripts.html

但是,内容脚本有一些限制。他们不能:

使用铬。API(chrome.extension 部分除外)*

(重点补充)

于 2013-08-02T03:51:43.313 回答