Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从chrome extension中打开的窗口获取背景页?_Javascript_Google Chrome_Google Chrome Extension_Google Chrome App - Fatal编程技术网

Javascript 如何从chrome extension中打开的窗口获取背景页?

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",

应用程序将从后台页面打开一个弹出窗口。打开的弹出窗口中有访问后台页面某些变量的js文件。但当它试图访问时

chrome.extension.getBackgroundPage().variable_name它给出了一个“未定义”的值

background.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”
来解决这个问题。