Данные из расширения на веб-страницу для начальной загрузки веб-страницы - Firefox

Создание расширения для и. Исходя из наших требований, нам нужна некоторая информация (ранее сохраненная в хранилище по расширению) от расширения до веб-страницы во время загрузки страницы. Данные, необходимые на веб-странице перед любыми XHRтриггер запроса с веб-страницы. Это достигается в Chromeпо следующему коду, но не может получить то же самое для Firefox. Данные не поступают на веб-страницу так же быстро, как и в Chrome.

Примечание. Веб-страница - это приложение для реагирования.

Для Chrome (рабочий код)

1 ответ

Решение

В Firefox есть еще более быстрый метод: зарегистрируйте динамически сгенерированный код как сценарий содержимого, который запускается в document_startа затем предоставляет данные на веб-страницу через wrappedJSObject поэтому страница имеет прямой доступ к данным синхронно с самого начала.

фоновый сценарий:

      let dataReg;
async function exposeData(data) {
  dataReg = await browser.contentScripts.register({
    js: [{
      code: `wrappedJSObject.__extensionData =
        cloneInto(${JSON.stringify(data)}, wrappedJSObject)`,
    }],
    matches: ['https://your.web.app/*'],
    runAt: 'document_start',
  });
}

Затем ваше веб-приложение использует window.__extensionData напрямую.