我正在学习在Electron中编写JavaScript。我有两个窗户。主窗口和儿童窗口。当主窗口关闭在Windows计算机上选择X时,我希望它关闭整个应用程序,包括子窗口。以下行适用于Mac PC。
mainWindow.on('closed', () => app.quit());
为windows pcs做同样事情的正确方法是什么。
答案 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事件,默认情况下应用程序将终止。
然后应用程序关闭,因为两个窗口都已关闭。