Как получить доступ к хранилищу Chrome из нескольких файлов HTML с расширением Chrome - PullRequest
1 голос
/ 31 мая 2019

У меня уже есть страница опций в моем расширении chrome, и я пытаюсь создать несколько других страниц в моем каталоге расширений, которые должны использовать данные хранилища chrome, собранные popup.html.

Я попытался добавить новую HTML-страницу в атрибут страницы параметров в файле manifest.json, но это не позволяет загрузить расширение. При доступе к хранилищу Chrome с событием «DOMContentLoaded» на новой HTML-странице без опций:

document.addEventListener("DOMContentLoaded", function () {
    getData();
}, false);

function getData() {
    chrome.storage.local.get(['data'], function (result) {
        console.log(result.data);
        setFormData(result.data[0])
    });
}


function setFormData(data){
    console.log(data)
}

Я получаю эту ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'local' из неопределенного

Я предполагаю, что это означает, что newHTML.html не использует файл манифеста, но я уверен, что я сообщаю файлу манифеста о newHTML.

Вот файл манифеста:

{
    "name": "ExtensionName!",
    "version": "1.0",
    "description": "A Chrome Extension!",
    "permissions": ["activeTab", "declarativeContent", "storage","<all_urls>"],
    "background": {
      "scripts": ["background.js"],
      "persistent": false
    },
    "options_page": "formMenu.html",
    "page_action": {
      "default_popup": "popup.html",
      "default_icon": {
        "16": "images/get_started16.png"
      }
    },
    "icons": {
      "16": "images/get_started16.png"
    },
    "manifest_version": 2,
    "content_security_policy": "script-src 'self' https://code.jquery.com https://cdnjs.cloudflare.com https://stackpath.bootstrapcdn.com https://use.fontawesome.com; object-src 'self'",
    "externally_connectable": {
      "ids": ["*"]
    }
  }

1 Ответ

1 голос
/ 31 мая 2019

Ваш код имеет доступ к chrome.storage , когда он работает в контексте вашего расширения .
Если вы открываете file://.../newHTML.html, это просто обычный контекст javascript.

Используйте chrome.runtime.getURL("newHTML.html"), чтобы получить URL-адрес расширения, который выглядит следующим образом: chrome-extension://[id]/newHTML.html.

Также нет необходимости ждать, пока DOMContentLoaded получит доступ к localStorage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...