3 - Electron BrowserWindow对象 关于窗口

优雅的打开应用~

当加载缓慢,打开应用的一瞬间会出现白屏,以下方法可以解决

javascript 复制代码
const mainWindow = new BrowserWindow({ show: false })
mainWindow.once('ready-to-show', () => {
  mainWindow.show()
})

设置背景颜色

javascript 复制代码
const win = new BrowserWindow({ backgroundColor: '#2e2c29' })

定义多窗口

javascript 复制代码
const createWindow = () => {
  const win = new BrowserWindow({
    width: 1000,
    height: 600,
  });
   win.loadFile("index.html");

   const win2 = new BrowserWindow({
    width: 600,
    height: 600,
  });
   win2.loadURL('https://www.csdn.net/')
};

创建了两个互不相干的窗口

定义父子窗口

javascript 复制代码
const createWindow = () => {
  const win = new BrowserWindow({
    width: 1000,
    height: 600,
  });
   win.loadFile("index.html");

   const win2 = new BrowserWindow({
    width: 600,
    height: 600,
    parent:win,//父窗口是win
  });
   win2.loadURL('https://www.csdn.net/')
};
  • 当不属于父子窗口时,拖动哪个窗口哪个窗口置顶
  • 当属于父子窗口时,拖动窗口后,子窗口置顶,父窗口在下面

frame属性

javascript 复制代码
const createWindow = () => {
  const win = new BrowserWindow({
    width: 1000,
    height: 600,
    frame: false
  });
   win.loadFile("index.html");
};

frame:true frame:false

当frame:false时

  • 窗口不能拖动
  • 没有标题

用css解决窗口拖动方案

html 复制代码
<style>
    html{
        height: 100%;
        user-select: none;
        -webkit-app-region:drag;
      }
</style>

但是这时存在一些小bug,当我们想拖动滑动条时,还是拖拽的窗口。

html 复制代码
input{
    -webkit-app-region:no-drag;
}

在你想拖拽的元素添加no-drag属性,就可以解决啦!

electron-win-state 保存窗口的状态

当用户拖拽窗口大小或位置,关闭应用后不会保留的;如果我们需要保存窗口状态可以试试下面插件

html 复制代码
npm i electron-win-state   
javascript 复制代码
const WinState=require('electron-win-state').default; 

const winState=new WinState({
  //初始化宽高
  defaultWidth:800, 
  defaultHeight:600,
})
const createWindow = () => {
  const win = new BrowserWindow({
    ...winState.winOptions, 
    //在这里定义的宽高位置都要删掉哦!
    // width: 1000,
    // height: 600,
    // x:100,
    // y:100,
    backgroundColor:'black',
  });
   win.loadFile("index.html");
   winState.manage(win);//在函数最下方写入
};

require('xxx').default

第一次接触这个有点疑惑,不明白什么意思,举个例子

javascript 复制代码
//导出接口


export default function() {}
// 等效于:
function a() {};
export {a as default}; //意思是把a函数导出去

import、require、export、module.exports 混合使用详解_import module.exports-CSDN博客

did-finish-load 外部资源加载完毕,dom-ready DOM加载完毕

javascript 复制代码
const wc = win.webContents;
wc.on("did-finish-load", () => {
  console.log("外部资源加载完毕");
});
wc.on("dom-ready", () => {
  console.log("DOM 加载完毕");
});
相关推荐
赏金术士5 分钟前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
子兮曰1 小时前
Bun v1.3.14 深度解析:Image API、HTTP/3、全局虚拟存储与五十项变革
前端·后端·bun
楼兰公子1 小时前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust
吴声子夜歌1 小时前
Go——并发编程
开发语言·后端·golang
kyriewen2 小时前
今天,百年巨头一次砍了9200人,而一个离职科学家的实话让全网睡不着觉
前端·openai·ai编程
ooseabiscuit2 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
问心无愧05132 小时前
ctf show web 入门42
android·前端·android studio
c1s2d3n4cs3 小时前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json
kyriewen3 小时前
老板逼我上AI,我偷偷在浏览器里跑LLaMA,省下20万API费
前端·react.js·llm
Beginner x_u3 小时前
前端八股整理(手写 02)|数组转树、数组扁平化、随机打乱一个数组
前端·数组·数组转树·数组扁平化