在browser.runtime.getBackgroundPage()中访问变量

时间:2019-06-09 03:09:39

标签: javascript google-chrome-extension firefox-webextensions webextension-polyfill

我目前正在建立一个以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吗?

1 个答案:

答案 0 :(得分:0)

结果证明,webpack将我的后台脚本包装在其他一些函数中,这真是令人头疼的事情。您可以像执行wOxxOm的建议一样,只需执行window.foo = foo,即可在后台脚本中手动将内容附加到窗口对象。