Доступ к переменным в browser.runtime.getBackgroundPage()
В настоящее время я создаю расширение для браузера с 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 ответ
Оказывается, веб-пакет оборачивает мои фоновые скрипты в некоторые другие функции, которые разрушают вещи. Вы можете вручную прикрепить вещи к объекту окна в фоновом скрипте, просто выполнив window.foo = foo
например, как предложил wOxxOm.