Доступ к переменным в browser.runtime.getBackgroundPage () - PullRequest
0 голосов
/ 09 июня 2019

В настоящее время я создаю расширение для браузера с create-react-app в качестве основы, пытаясь использовать getBackgroundPage () вместо API обмена сообщениями для связи между фоновыми сценариями (я определил 3) и новой вкладкой, но это похоже, что вызов browser.runtime.getBackgroundPage () на странице новой вкладки возвращает объект Window без каких-либо моих функций или переменных из фоновых скриптов, прикрепленных как свойства Window.

Ниже приведено сообщение об ошибке «переменная не определена», а «page.foo () не является функцией».

// background_3.js

var test = [];

// Some stuff so webpack doesn't get rid of the unused variable.
for (let i = 0; i < 10; ++i) {
    test.push(i);
}

function foo() {
    console.log("foo");
}
// New Tab React page
import browser from "webextension-polyfill";

browser.runtime.getBackgroundPage()
    .then(page => {
        console.log(page.test);
        page.foo();
    });

Что-то я не так делаю? Должен ли я просто использовать API сообщений вместо этого?

1 Ответ

0 голосов
/ 09 июня 2019

Оказывается, веб-пакет оборачивает мои фоновые скрипты в некоторые другие функции, которые разрушают вещи.Вы можете вручную прикрепить объекты к объекту окна в фоновом скрипте, просто выполнив window.foo = foo, как предложено wOxxOm.

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