我正在制作一个电子应用程序。该应用程序可以打开一个新窗口(弹出窗口),以将其拖动到其他显示器上。此窗口可以打开另一个窗口,依此类推。我需要用户能够关闭他不想要的窗口,但让其他人保持打开状态。
首先,我尝试了window.open
,但是当父窗口关闭时,子窗口也被关闭了。我以为一定是因为var收集到垃圾了。
第二,我尝试在主流程中绑定到new-window
事件。
这就是我所做的:
let windows = [];
function createNewWindow(){
let win = new BrowserWindow(
{
width: 1600,
height: 900,
webPreferences: {
nodeIntegration: true
}
}
);
win.webContents.on('new-window', (event, url) => {
event.preventDefault()
let win = createNewWindow();
win.loadURL(url);
event.newGuest = win;
})
windows.push(win);
return win;
}
但是,当父母关闭时,孩子也关闭了。我检查了windows
变量,但它已正确保留在主进程中,因此这应该不是GC问题。
在关闭主父窗口时,如何在不关闭的情况下打开一系列窗口(有或没有window.open
)?
编辑
由于我没有找到使窗口保持打开状态的方法,因此我决定隐藏窗口而不是关闭它们。这就是我所做的:
win.on("close", (event) => {
if (win.hideInsteadOfClose == true) {
event.preventDefault();
win.hide();
}
});
hideInsteadOfClose
是我赋予创建的新窗口的属性。这不是正确的方法,但是可以完成工作。请随时以正确的方式回答。
答案 0 :(得分:0)
由于我没有找到使窗口保持打开状态的方法,因此我决定隐藏窗口而不是关闭它们。这就是我所做的:
win.on("close", (event) => {
if (win.hideInsteadOfClose == true) {
event.preventDefault();
win.hide();
}
});
hideInsteadOfClose
是我赋予创建的新窗口的属性。这不是正确的方法,但是可以完成工作。
请随时以正确的方式回答。