electron创建窗口会出现白屏问题,以下是介绍预创建窗口的总结。
1、基本设置不变,初始化创建的时候添加show: false配置。
const { BrowserWindow } = require('electron');
const win = new BrowserWindow({ show: false });
每次只需show/hide窗口即可。
win.show(); // 显示
win.hide(); // 隐藏
2、某些快捷键或者系统默认快捷键,会对窗口默认触发close操作。
这样就会导致窗口被销毁,当要展示窗口时,需要重新创建,就会再次出现白屏问题。
解决方法:做预创建窗口监听,阻止触发close,改为hide。
// 预创建窗口
win.on('close', function(e) {
e.preventDefault();
setTimeout(() => { win.hide(); }, 50)
});
3、但是阻止预创建窗口触发close时,同样也会阻止整个electron应用退出。
解决办法:对app对退出前监听,增加是否要退出应用的全局标识。
const { app } = require('electron');
app.on('before-quit', function(e) {
global.QUIT = true;
});
// 预创建窗口
win.on('close', function(e) {
if (global.QUIT) { return false; }
e.preventDefault();
setTimeout(() => { win.hide(); }, 50)
});
网友评论