Electron主进程里怎么监听窗口关闭事件?

一奕卓 阅读 3

我在用 Electron 开发桌面应用,想在用户点击窗口右上角关闭按钮时做一些清理操作,比如保存数据。但不知道怎么在主进程里正确监听这个事件。

试过用 mainWindow.on('close', ...),但好像没生效,或者触发时机不对?是不是应该用别的事件?

这是我的窗口创建代码:

const mainWindow = new BrowserWindow({
  width: 800,
  height: 600,
  webPreferences: {
    preload: path.join(__dirname, 'preload.js')
  }
});

mainWindow.on('close', () => {
  console.log('窗口要关闭了');
  // 想在这里做点事
});
我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
设计师晓芳
close 事件没问题,但你想阻止关闭做清理的话得调 event.preventDefault(),完事再 mainWindow.destroy()

mainWindow.on('close', (event) => {
event.preventDefault(); // 阻止直接关闭
// 做你的清理操作...
saveData().then(() => {
mainWindow.destroy(); // 完事后真正关闭
});
});


如果不需要阻止关闭,只是监听,用 closed 事件也行,那是窗口关掉之后触发的。
点赞
2026-03-01 14:11