Javascript 如何从chrome extension中打开的窗口获取背景页?
应用程序将从后台页面打开一个弹出窗口。打开的弹出窗口中有访问后台页面某些变量的js文件。但当它试图访问时 chrome.extension.getBackgroundPage().variable_name它给出了一个“未定义”的值 background.html包含Javascript 如何从chrome extension中打开的窗口获取背景页?,javascript,google-chrome,google-chrome-extension,google-chrome-app,Javascript,Google Chrome,Google Chrome Extension,Google Chrome App,应用程序将从后台页面打开一个弹出窗口。打开的弹出窗口中有访问后台页面某些变量的js文件。但当它试图访问时 chrome.extension.getBackgroundPage().variable_name它给出了一个“未定义”的值 background.html包含 chrome.browserAction.onClicked.addListener(function() { return chrome.windows.create({ url: "../popup.html",
chrome.browserAction.onClicked.addListener(function() {
return chrome.windows.create({
url: "../popup.html",
type: 'popup',
height: 500,
width: 200
}, function(window) {
return console.log("opening a window");
});
});
manifest.json
{
"name": "app name",
"version": "0.0.2",
"manifest_version": 2,
"minimum_chrome_version": "23",
"icons": {
"16": "images/background-16.png",
"48": "images/background-48.png",
"128": "images/background-120.png"
},
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": "images/background-16.png"
},
"default_locale": "en",
"permissions": [
"storage",
"pushMessaging",
"notifications",
"tts",
]
}如果使用
getBackgroundPage()
,则必须在回调函数中调用后台变量
例如:
在background.js
中:
var cow = "mooh";
// The code to open myApp.html
在myApp.js
中(链接到myApp.html
):
如果使用
getBackgroundPage()
,则必须在回调函数中调用后台变量
例如:
在background.js
中:
var cow = "mooh";
// The code to open myApp.html
在myApp.js
中(链接到myApp.html
):
“
background.html
”实际上是一个js文件,是吗?而popup.html
中有什么?“background.html
”实际上是一个js文件,是吗?还有一点需要注意,您想要访问的方法必须位于后台脚本的全局窗口范围内。因此,如果您只是使用const myFunc=()=>{}
(在background.js
)声明一个函数,那么它在getBackgroundPage()
中将不可见。另一个重要注意事项是,如果您使用Webpack,它会将您的全局函数/变量包装在一个模块中,您将无法通过getBackgroundPage()访问它们
。您可以使用global.cow=“mooh”
来解决这个问题。另一件需要注意的小事情是,您要访问的方法必须位于后台脚本的全局窗口
范围内。因此,如果您只是使用const myFunc=()=>{}
(在background.js
)声明一个函数,那么它在getBackgroundPage()
中将不可见。另一个重要注意事项是,如果您使用Webpack,它会将您的全局函数/变量包装在一个模块中,您将无法通过getBackgroundPage()访问它们
。您可以使用global.cow=“mooh”
来解决这个问题。