关闭子窗口的方法大体流程如下:
1、在渲染进程(子窗口)中通过点击“关闭”按钮事件,通知主进程

ipcRenderer.send("close");

2、主进程收到通知后执行close方法

ipcMain.on('close', () => {
  //在这里可以做一些逻辑判断,是否可以关闭,如果想阻止关闭,使用:event.preventDefault();
  win  && win.close();
});

3、在创建窗口的时候,可以给他添加close的回调监听;调用close的方法后就会进入这里的回调

const win = new BrowserWindow()
win.on('close', (event) => {
  console.log(`窗口即将销毁`);
});

这里我遇到了个坑,发现windows在开着控制台的时候,调用close方法没办法关闭渲染进程,把控制台关了就好了
请添加图片描述
也没找到什么原因,最后只能用destroy强制给他关闭就ok了

win.on('close', (event) => {
  //前面可以加些判断条件,看下当前是否可以关闭进程
  let { canClose } = storage.getData('canClose');
  if(canClose){
  	win.destroy()
  }
});

文档中对close和destroy的区别介绍也不是很详细
在这里插入图片描述
参考文档:electron官方文档

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐