背景
Electron白屏问题主要出现在两方面:
1、electron未加载完毕html,electron自身产生的白色背景;
2、electron加载html,html处于加载渲染过程中产生的短暂白屏;
解决方法:
方法1:
z可设置electron自带的transparent属性进行处理。
new BrowserWindow({
transparent: true, frame: false
})
2中问题可通过提高首屏渲染速度
方法2:
但是,1中可能会由于设置了 app.allowRendererProcessReuse = false; 导致设置背景透明失效。
2中的首屏渲染也只能无限接近,虽然可以在渲染前通过设置html loading,避免白屏的问题,但是在一些业务场景中是不符合业务需求的。
步骤:
1、预加载browserWindow,设置show:false。
因为该窗口只是隐藏,并不是关闭,所以内部的html地址仍然会加载执行。
2、但是,在mac的多桌面、mac与windows的多扩展屏会出现,show窗口的时候。
窗口只会出现在第一次创建的窗口的桌面;
如果之前拖动过窗口,窗口再次被show时,只会出现在最后拖动完成的位置。
故此,可以采用以下的方法处理问题。
若是通过点击或者触发某个窗口(已经存在)的位置来唤起。
1)通过设置父子窗口来完成。
childWindow.setParentWindow(parentWindow);
2)异步解除父子窗口关系。
setTimeout(() => {
childWindow.setParentWindow(null);
}, 0);
结语
感谢您的阅读!希望本文带给您有价值的信息。
如果对您有帮助,请「点赞」支持,并「关注」我的主页获取更多后续相关文章。同时,也欢迎「收藏」本文,方便以后查阅。
写作不易,我会继续努力,提供有意义的内容。感谢您的支持和关注!