Подтвердить что ты не робот

Chrome.storage.sync undefined?

Я пытаюсь использовать хром-хранилище в расширении через 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);
    });
}
4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

http://arewewebextensionsyet.com/#storage

Ответ 3

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

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

"permissions": [
    "storage"
 ]

Перейдите к расширению с помощью: chrome://extensions/и нажмите кнопку "Обновить": -

введите описание изображения здесь

Ответ 4

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

Однако сценарии содержимого имеют некоторые ограничения. Они не могут:

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

(выделено курсивом)