Javascript 当父窗口在Electron中关闭时,防止子窗口关闭

Javascript 当父窗口在Electron中关闭时,防止子窗口关闭,javascript,electron,Javascript,Electron,我正在做一个电子应用程序。此应用程序可以打开一个新窗口(弹出窗口),并将其拖动到其他显示器上。这个窗口可以打开另一个窗口,依此类推。我需要用户能够关闭他不想要的窗口,但保持其他窗口打开 首先,我尝试了window.open,但是当父窗口关闭时,子窗口就会关闭。我想这一定是因为var被垃圾回收了 其次,我尝试绑定到主进程中的新窗口事件。 这就是我所做的: let windows = []; function createNewWindow(){ let win = new BrowserWi

我正在做一个电子应用程序。此应用程序可以打开一个新窗口(弹出窗口),并将其拖动到其他显示器上。这个窗口可以打开另一个窗口,依此类推。我需要用户能够关闭他不想要的窗口,但保持其他窗口打开

首先,我尝试了
window.open
,但是当父窗口关闭时,子窗口就会关闭。我想这一定是因为var被垃圾回收了

其次,我尝试绑定到主进程中的
新窗口
事件。 这就是我所做的:

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
var,但它正确地保留在主进程中,因此这不应该是GC问题

当主父窗口关闭时,如何打开一系列窗口(有或没有
窗口。打开
),而不关闭它们

编辑


由于我没有找到保持窗户打开的方法,我决定把窗户藏起来而不是关上。这就是我所做的:

  win.on("close", (event) => {
    if (win.hideInsteadOfClose == true) {
      event.preventDefault();
      win.hide();
    }
  });
  win.on("close", (event) => {
    if (win.hideInsteadOfClose == true) {
      event.preventDefault();
      win.hide();
    }
  });

其中,
hideInsteadOfClose
是我为新创建的窗口提供的属性。这不是正确的方法,但它可以完成工作。请用正确的方式回答。

由于我没有找到保持窗口打开的方法,我决定隐藏窗口而不是关闭它们。这就是我所做的:

  win.on("close", (event) => {
    if (win.hideInsteadOfClose == true) {
      event.preventDefault();
      win.hide();
    }
  });
  win.on("close", (event) => {
    if (win.hideInsteadOfClose == true) {
      event.preventDefault();
      win.hide();
    }
  });
其中,
hideInsteadOfClose
是我为新创建的窗口提供的属性。这不是正确的方法,但它可以完成工作


请随意用正确的方式回答。

我确信问题在于您让浏览器上下文启动新窗口的方式,而不是使用IPC线程与主线程通信。