为什么关闭渲染器窗口时我的Electron应用程序退出?

Tom*_*zek 3 electron

我正在Windows上进行测试。该应用程序在“就绪”上设置了带有“关于”标签的纸盘菜单。单击后,将显示一个BrowserWindow:

 var aboutBox = new BrowserWindow({
        width: 460, height: 176, useContentSize: true,
        icon: iconImg,
        maximizable: false, fullscreenable: false, resizable: false, minimizable: false
    });
Run Code Online (Sandbox Code Playgroud)

然后,当用户单击“确定”时,使用以下命令将其关闭:

const remote = require('electron').remote;
remote.getCurrentWindow().close();
Run Code Online (Sandbox Code Playgroud)

导致应用退出。

为什么?

Leo*_*emi 8

在您的main.js中,您可以包含以下代码:

// Quit when all windows are closed.

  app.on('window-all-closed', function () {
  // On OS X it is common for applications and their menu bar  
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform !== 'darwin') {
    app.quit()
  }
})
Run Code Online (Sandbox Code Playgroud)

因此,由于您关闭了唯一窗口,因此将触发该事件并关闭了应用程序。

编辑 此行为也是Electron中的默认行为,因此为避免关闭应用程序关闭主窗口,请添加以下行:

app.on('window-all-closed', e => e.preventDefault() )
Run Code Online (Sandbox Code Playgroud)