开发者问题收集

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

2017-06-16
16620

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

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

在 Windows PC 上执行相同操作的正确方法是什么。

2个回答

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, the will-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 returning false in the beforeunload event handler.

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

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

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

Hans Koch
2017-06-18

我在 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.

由于两个窗口都已关闭,因此应用程序关闭。

user1990962
2018-03-21