使用 Electron 时关闭所有应用程序窗口
我正在学习在 Electron 中编写 JavaScript。我有两个窗口。一个主窗口和一个子窗口。当在 Windows 计算机上选择 X 关闭主窗口时,我希望它关闭整个应用程序,包括子窗口。下面的代码行适用于 Mac PC。
mainWindow.on('closed', () => app.quit());
在 Windows PC 上执行相同操作的正确方法是什么。
app.quit()
是执行此操作的正确函数。
引自文档 ( https://github.com/electron/electron/blob/master/docs/api/app.md )
Try to close all windows. The
before-quit
event will be emitted first. If all windows are successfully closed, thewill-quit
event will be emitted and by default the application will terminate.This method guarantees that all
beforeunload
and unload event handlers are correctly executed. It is possible that a window cancels the quitting by returningfalse
in thebeforeunload
event handler.
如果您在单击按钮时直接关闭应用程序,而不是关闭窗口 -> 监听事件 -> 并退出应用程序,则可以更正 Windows 中的行为
const app = require('electron').remote.app;
const close = document.getElementById('myCloseButton');
close.on('click',function(){
app.quit();
});
注意:
app.exit()
也存在,但它不会发送上面提到的事件,因此只应在必要时使用它。
我在 main.js 中像这样处理它:
// create two windows
let mainWindow = new BrowserWindow();
let backgroundWindow = new BrowserWindow();
向渲染器公开一个函数(在本例中为“mainWindow”)以关闭应用程序:
exports.closeAppWindow = function(){
backgroundWindow.close();
mainWindow.close();
}
正如上面引用的文档所述:
If all windows are successfully closed, the will-quit event will be emitted and by default the application will terminate.
由于两个窗口都已关闭,因此应用程序关闭。