我正在制作一个Electron应用程序。该应用有一种打开新窗口(弹出窗口)以在不同的监视器上拖动的方法。这个窗口有一种打开另一个窗口的方法,如此循环。我需要用户能够关闭他不想要的窗口,但保持其他窗口开启。
首先,我尝试使用
其次,我尝试在主进程中绑定
但是当父级关闭时,子级也会被关闭。我检查了
如何打开一系列窗口(有或没有
编辑
由于我没有找到保持窗口打开的方法,我决定隐藏窗口而不是关闭它们。我所做的就是:
首先,我尝试使用
window.open
,但当父窗口被关闭时,子窗口也会关闭。我认为这是因为变量被垃圾回收了。其次,我尝试在主进程中绑定
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
是我赋予新窗口的一个属性。虽然这不是正确的方法,但可以完成工作。欢迎用正确的方式回答。