chrome.storage.sync не определено?

Я пытаюсь использовать Chrome Storage в расширении, используя content_script, но продолжаю терпеть неудачу на

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);
    });
}

5 ответов

Решение

Вы должны добавить разрешение "хранилище" в свой файл manifest.json, а именно:

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

Для получения дополнительной информации см.: https://developer.chrome.com/extensions/storage

Перезагрузите расширение

Мне добавили ключ "permissions" manifest файл, но все же я изо всех сил пытался это исправить.

После добавления разрешения:-

"permissions": [
    "storage"
 ]

Перейдите к вашему расширению, используя: chrome://extensions/ и нажмите кнопку "Перезагрузить":-

Если кто-то сталкивался с этой проблемой в Firefox, обратите внимание, что она еще не поддерживается:

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

Для моих целей было достаточно заменить chrome.storage.sync от chrome.storage.local,

Что касается состояния реализации Firefox, возможно, стоит время от времени заглядывать сюда:

http://arewewebextensionsyet.com/

ПЕРЕЗАГРУЗИТЕ СЕРВЕР DEV

Несмотря на добавление разрешения и перезагрузку расширения, синхронизация все еще не была определена.

Оказалось, что мне нужно перезапустить сервер разработки, чтобы поднять новый манифест. Это имеет смысл, поскольку этот файл не просматривался. Дох!

См. https://developer.chrome.com/extensions/content_scripts.html:

Однако у скриптов контента есть некоторые ограничения. Они не могут:

Используйте хром. API (за исключением частей chrome.extension) *

(выделение добавлено)

Другие вопросы по тегам