Electron 关闭 按钮弹框确认

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的值,进行操作即可。

你可能感兴趣的:(electron,electron,dialog)