我想问用户是否真的要关闭电子应用程序。
因此to docs-我已经尝试过:
window.onbeforeunload = (e) => {
const answer = confirm('Do you want to close the application?');
e.returnValue = answer;
if (answer) { window.close(); }
};
但是无论用户选择什么,我的应用程序仍然关闭。 如何防止有条件地关闭Electron应用程序?
答案 0 :(得分:1)
我想,我有一个答案。 不应在渲染器过程中调用它。 相反,我们应该在主进程中使用mainWindow进行此类操作,并使用“关闭”生命周期方法,该方法将在关闭前立即调用。
this.mainWindow.on('close', (e) => {
const choice = this.dialog.showMessageBox(
this.mainWindow,
{
type: 'question',
buttons: ['Yes', 'No, hang on', 'third option'],
title: 'Confirm your actions',
message: 'Do you really want to close the application?'
}
);
console.log('CHOICE: ', choice);
if (choice > 0) e.preventDefault();
});
choice const将从buttons数组返回答案,因此“是”将被确认,对于其他选项,我们可以阻止操作。
注意:我从代码中粘贴了this.
,但是显然mainWindow
是您的BrowserWindow
实例,this.dialog
是electron.dialog
import electron from 'electron';