Javascript onClosed()在使用X关闭Chrome应用程序时未触发
Background.js:Javascript onClosed()在使用X关闭Chrome应用程序时未触发,javascript,google-chrome,manifest,google-chrome-app,Javascript,Google Chrome,Manifest,Google Chrome App,Background.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.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”无效
“chrome.app.window.current().onClosed允许您在窗口关闭时注册事件侦听器。”
在这里找到答案:
编辑:
文件:
国家:
窗口关闭时激发。请注意,这应该从正在关闭的窗口以外的窗口收听,例如从背景页。这是因为当触发事件时,关闭的窗口将处于被拆除的过程中,这意味着窗口脚本上下文中的所有API都不能正常工作
您需要将侦听器附加到特定的窗口,以使其工作,而不是附加到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');
});
});
})
我添加了一个eventListener,它应该在窗口关闭时输出到控制台,但它没有这样做:“chrome.app.window.get(windowIDUsedToCreateChildWindow).onClosed.addListener(function(){…})”文档有点误导。根据说明chrome.app.window.current().onClosed应该在后台为任何窗口触发(不通过ID获取它)。。。但事实并非如此先生你是我的英雄