javascript - 使用 X 关闭 Chrome 应用程序时 onClosed() 不会触发

标签 javascript google-chrome manifest google-chrome-app

背景.js:

chrome.app.runtime.onLaunched.addListener(function() {
  console.log('launched');
  chrome.app.window.create('index.html', {
    innerBounds: {
      width: 800,
      height: 600,
      minWidth: 200,
      minHeight: 200,
    }
  });
})

chrome.app.window.onClosed.addListener(function() {
    console.log('close bg');
});

mainfest.json:

{
  "name": "xxx",
  "description": "xxx",
  "version": "3.4.0",
  "manifest_version": 2,
  "icons": {
    "16": "16.png",
    "48": "48.png",
    "128": "128.png"
  },
  "permissions": [
    {"socket": [
      "tcp-listen:*:*", 
      "tcp-connect", 
      "resolve-host", 
      "udp-bind:*:*", 
      "udp-send-to:*:*"
    ]}
  ],

  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  }
}

我试图在用户使用红色 X 时检测 Chrome 应用程序窗口的关闭。但是,“close bg”控制台日志从未出现,因此我认为它不会触发。

我错过了什么?


我已更新我的 .json 以包含持久的后台页面。我想也许 bg 页面关闭得太快以至于事件无法触发。

{
  "name": "xxx",
  "description": "xxx": "3.4.0",
  "manifest_version": 2,
  "icons": {
    "16": "16.png",
    "48": "48.png",
    "128": "128.png"
  },
  "permissions": [
    {"socket": [
      "tcp-listen:*:*", 
      "tcp-connect", 
      "resolve-host", 
      "udp-bind:*:*", 
      "udp-send-to:*:*"
    ]}
  ],

  "app": {
    "background": {
      "page": "background.html",
      "persistent": true
    }
  }
}

我已经添加了以下用户的“获取”想法:

chrome.app.runtime.onLaunched.addListener(function() {
  console.log('launched');
  chrome.app.window.create('index.html', {
      id:'cci',
    innerBounds: {
      width: 800,
      height: 600,
      minWidth: 200,
      minHeight: 200,
    }
  });
})


chrome.app.window.get('cci').onClosed.addListener(function() {
        console.log('close bg');
});

但是,在启动时我收到此错误。我认为 ID 的分配速度不够快,因此“cci”无效。

js error

最佳答案

您需要将监听器附加到特定窗 Eloquent 能使其工作,而不是附加到 chrome.app.window 全局对象。 chrome.app.window.create() 函数中的第三个参数允许您指定接收新创建的窗口对象作为参数的回调。

chrome.app.runtime.onLaunched.addListener(function() {
  console.log('launched');
  chrome.app.window.create('index.html', {
    innerBounds: {
      width: 800,
      height: 600,
      minWidth: 200,
      minHeight: 200,
    }
  }, function(window){
      window.onClosed.addListener(function() {
        console.log('close bg');
      });
  });
})

关于javascript - 使用 X 关闭 Chrome 应用程序时 onClosed() 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096060/

相关文章:

Android Studio 互联网权限错误

java - *.jar/META-INF/*.* 中有哪些文件?

javascript - typescript 错误 TS2339 : Property 'webkitURL' does not exist on type 'Window'

javascript - 如何在 Chrome 中定义 SharedArrayBuffer?

javascript - 如何执行不区分大小写的字符串比较?

javascript - 从 for 循环创建一个数组数组

css - Chrome 网络应用程序大小和位置

Android蓝牙权限未显示,仍描述为打开

javascript - Node.js 如何删除具有事件监听器的对象并释放内存?

javascript - 如何在React Native中显示动态图像?