【问题标题】:How to get background page from a window opened in chrome extension?如何从在 chrome 扩展中打开的窗口中获取背景页面?
【发布时间】:2014-03-11 07:10:47
【问题描述】:

应用程序从后台页面打开一个弹出窗口。打开的弹出窗口有 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");
});
});

ma​​nifest.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",

] }

【问题讨论】:

  • "background.html" 真的是个js文件吧? popup.html 中有什么内容?

标签: javascript google-chrome google-chrome-extension google-chrome-app


【解决方案1】:

如果你使用getBackgroundPage(),你必须在回调函数中调用背景的变量。

例如:

background.js

var cow = "mooh";
// The code to open myApp.html

myApp.js(链接到myApp.html):

chrome.runtime.getBackgroundPage(function (backgroundPage) {
    console.log(backgroundPage.cow); // Displays "mooh".
});

【讨论】:

  • 另外一点需要注意的是,你要访问的方法必须在后台脚本的全局window 范围内。因此,如果您只是用const myFunc = () => {}(在background.js)声明一个函数,那么它在getBackgroundPage() 中将不可见。
  • 另一个重要提示 - 如果您使用 Webpack,它会将您的全局函数/变量包装在一个模块中,您将无法通过 getBackgroundPage() 访问它们。你可以使用global.cow = "mooh" 来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2016-10-24
相关资源
最近更新 更多