我目前正在建立一个以create-react-app
为基础的浏览器扩展,试图使用getBackgroundPage()而不是消息传递API在后台脚本(我定义了3个)和新标签页之间进行通信,但似乎在新标签页中调用browser.runtime.getBackgroundPage()会返回一个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吗?
答案 0 :(得分:0)
结果证明,webpack将我的后台脚本包装在其他一些函数中,这真是令人头疼的事情。您可以像执行wOxxOm的建议一样,只需执行window.foo = foo
,即可在后台脚本中手动将内容附加到窗口对象。