NW.js 打开一个新的 window 并在发生事件时关闭它
NW.js open a new window and close it on event
我正在将我的 NW.js v0.12.3 迁移到新的 NW.js v0.17.3。
在我的旧应用程序中,我曾经打开 window 来显示来电通知。如果用户接听电话或挂断电话,我会关闭基于特殊事件侦听器的 window。
这是我的代码,在 v0.12.3 中没有问题:
var notificationWin;
window.onload = function () {
var messageHandler = function(event) {
if(event.data.key == 'incomingCall'){
win.requestAttention(1);
notificationWin = gui.Window.open('notification.html', {
frame: false,
toolbar: false,
focus: true,
icon: "app/imgs/traywinaz.png",
title:"Incoming Call"
});
notificationWin.on ('loaded', function(){
....
});
}else if(event.data.key == 'callRejected' || event.data.key == 'callAnswered' || event.data.key == 'callCanceled' ){
notificationWin.close();
}
}
window.addEventListener('message', messageHandler, false);
}
但在新版本中我无法关闭呼叫被拒绝或已接听事件中的window。我无法收到关闭它的通知 window。
我的新代码如下所示:
var messageHandler = function(event) {
if(event.data.key == 'incomingCall'){
win.requestAttention(1);
nw.Window.open('app/notification.html', {
frame: false,
focus: true,
icon: "app/imgs/traywinaz.png",
id: "callNotification"
}, function(new_notification) {
new_notification.setAlwaysOnTop(true);
new_notification.setVisibleOnAllWorkspaces(true);
new_notification.on ('loaded', function(){
....
});
});
}else if(event.data.key == 'callRejected' || event.data.key == 'callAnswered' || event.data.key == 'callCanceled' ){
try{
notificationWin = nw.Window.get('app/notification.html');
notificationWin.close();
}catch(e){
console.log(e);
}
}
};
我只能在回调中得到 window 所以我也尝试在回调中做这样的事情:
notificationWin = new_notification;
但这会关闭我的主 window。
关于我做错了什么或者我该如何实现的任何想法?
文档 http://docs.nwjs.io/en/latest/References/Window/#windowgetwindow_object 说 Window.get([window_object]) 但不知道如何在新版本中获取 [window_object] 参数。
回到这个问题上,我通过在 de callback 中保存引用来解决它:"notificationWin = new_notification;" 然后调用 notificationWin.close();
我第一次尝试此操作时它关闭了我的主 window 但现在有效:)
我正在将我的 NW.js v0.12.3 迁移到新的 NW.js v0.17.3。 在我的旧应用程序中,我曾经打开 window 来显示来电通知。如果用户接听电话或挂断电话,我会关闭基于特殊事件侦听器的 window。
这是我的代码,在 v0.12.3 中没有问题:
var notificationWin;
window.onload = function () {
var messageHandler = function(event) {
if(event.data.key == 'incomingCall'){
win.requestAttention(1);
notificationWin = gui.Window.open('notification.html', {
frame: false,
toolbar: false,
focus: true,
icon: "app/imgs/traywinaz.png",
title:"Incoming Call"
});
notificationWin.on ('loaded', function(){
....
});
}else if(event.data.key == 'callRejected' || event.data.key == 'callAnswered' || event.data.key == 'callCanceled' ){
notificationWin.close();
}
}
window.addEventListener('message', messageHandler, false);
}
但在新版本中我无法关闭呼叫被拒绝或已接听事件中的window。我无法收到关闭它的通知 window。
我的新代码如下所示:
var messageHandler = function(event) {
if(event.data.key == 'incomingCall'){
win.requestAttention(1);
nw.Window.open('app/notification.html', {
frame: false,
focus: true,
icon: "app/imgs/traywinaz.png",
id: "callNotification"
}, function(new_notification) {
new_notification.setAlwaysOnTop(true);
new_notification.setVisibleOnAllWorkspaces(true);
new_notification.on ('loaded', function(){
....
});
});
}else if(event.data.key == 'callRejected' || event.data.key == 'callAnswered' || event.data.key == 'callCanceled' ){
try{
notificationWin = nw.Window.get('app/notification.html');
notificationWin.close();
}catch(e){
console.log(e);
}
}
};
我只能在回调中得到 window 所以我也尝试在回调中做这样的事情:
notificationWin = new_notification;
但这会关闭我的主 window。
关于我做错了什么或者我该如何实现的任何想法?
文档 http://docs.nwjs.io/en/latest/References/Window/#windowgetwindow_object 说 Window.get([window_object]) 但不知道如何在新版本中获取 [window_object] 参数。
回到这个问题上,我通过在 de callback 中保存引用来解决它:"notificationWin = new_notification;" 然后调用 notificationWin.close();
我第一次尝试此操作时它关闭了我的主 window 但现在有效:)