使用Electron时关闭所有应用程序窗口

时间:2017-06-16 12:28:25

标签: javascript electron

我正在学习在Electron中编写JavaScript。我有两个窗户。主窗口和儿童窗口。当主窗口关闭在Windows计算机上选择X时,我希望它关闭整个应用程序,包括子窗口。以下行适用于Mac PC。

mainWindow.on('closed', () => app.quit());

为windows pcs做同样事情的正确方法是什么。

2 个答案:

答案 0 :(得分:8)

app.quit()是执行此操作的正确功能。

来自文档(https://github.com/electron/electron/blob/master/docs/api/app.md

的引用
  

尝试关闭所有窗口。 before-quit事件将首先发出。如果所有窗口都成功关闭,将发出will-quit事件,默认情况下应用程序将终止。

     

此方法保证所有beforeunload和卸载事件处理程序   正确执行。窗口可能会取消   通过在false事件处理程序中返回beforeunload来退出。

如果您在点击按钮时直接关闭应用,而不是关闭窗口,则可以更正Windows中的行为 - >听取这个事件 - >并退出应用

const app = require('electron').remote.app;
const close = document.getElementById('myCloseButton');
close.on('click',function(){
  app.quit();
});

注意:app.exit()也存在但不发送上述事件,因此只应在必要时使用。

答案 1 :(得分:1)

我在main.js中处理它:

// create two windows
let mainWindow = new BrowserWindow();
let backgroundWindow = new BrowserWindow();

将一个函数暴露给渲染器(在本例中为“mainWindow”)以关闭应用程序:

 exports.closeAppWindow = function(){
    backgroundWindow.close();
    mainWindow.close();
}

正如上面引用的文件所述:

  

如果所有窗口都成功关闭,将发出will-quit事件,默认情况下应用程序将终止。

然后应用程序关闭,因为两个窗口都已关闭。