Electron 点击关闭按钮弹框确认
原因:
一般客户端有这么种需求,用户点击关闭按钮之后,弹出一个弹框,有确认和取消 按钮,给用户确定是否进行客户端的关闭。
解决:
在main.js中对mainWindow进行 close的事件监听。
先阻止默认行为(必须),在对dialog的回调函数执行相应的处理方法
此例中的用途是点击之后弹框确认 最小化和 确认关闭
const {app, BrowserWindow, globalShortcut, dialog, Menu, ipcMain} = require('electron')
const path = require('path')
let mainWindow
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
preload: path.resolve(path.join(__dirname, './src/preload.js'))
}
});
mainWindow.loadFile('index.html');
mainWindow.on('close', (e) => {
dialog.showMessageBox({
type: 'info',
title: 'Information',
defaultId: 0,
message: '确定要关闭吗?',
buttons: ['最小化','直接退出']
},(index)=>{
if(index===0){
e.preventDefault(); //阻止默认行为,一定要有
mainWindow.minimize(); //调用 最小化实例方法
} else {
mainWindow = null;
//app.quit(); //不要用quit();试了会弹两次
app.exit(); //exit()直接关闭客户端,不会执行quit();
}
})
});
}
app.on('ready', createWindow)
app.on('activate', function () {
if (mainWindow === null) createWindow()
});
其他
有需要其他操作,都可以在dialog中的buttons里面添加,然后在回调函数中,判断返回的index的值,进行操作即可。