我正在尝试为google chrome构建“复杂”扩展程序,实际上该扩展程序实际上是构建的(JSLoader),并且该扩展程序中使用的结构已在几个月前开始工作。现在我想更新它,但是由于chrome.runtime.getBackgroundPage()的某些奇怪行为,我的弹出窗口都没有显示。我在manifest.json中声明了几个“模块”,如下所示:
"background": {
"scripts": [
"dependencies/dep1.js",
" ... ",
"bg/module1.js",
"bg/module2.js",
" ... "
"bg/background.js"
]
},
然后在我的背景页面中,我以以下方式实例化每个模块:
this.module1 = new Module1(this);
this.module2 = new Module2(this);
其中module1和module2分别定义功能(或旧样式类)Module1和Module2。然后从我的弹出窗口中,具体是从我正在执行的扩展的页面操作和选项页面中:
chrome.runtime.getBackgroundPage(page => {
...
/* this fails and says that module1 is not defined */
page.module1.callSomeFunctionOnModule1()
...
})
如上所述,这曾经在几个月前起作用,而且我不知道为什么不再定义我的实例,实际上在后台页面中定义的功能都不可用。有什么理由我不能再这样做了吗?从页面操作和选项页面在后台调用函数的方式是什么?
我不知道该怎么做...我的函数不再在前台定义了。.我试图调用chrome.extension.getBackgroundPage而不是没有好运的chrome.runtime.getBackgroundPage。
您可以在https://github.com/szz-dvl/JSLoader/tree/chrome
中找到完整的扩展名我希望能够从前景页面(页面操作和选项页面)访问我的后台功能。
谢谢!