客户端开发(Electron)认识窗口2

简介: 客户端开发(Electron)认识窗口2

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。


如何创建一个非矩形的窗口:


调整主进程代码

  1. 调整窗口的宽高尺寸一致,是窗口变为正方形;
  2. 调整窗口为透明,效果如下图显示;
    1.png
  3. 保持frame属性为false,依然由我们自己来定义边框和标题栏;
  4. 通常这样的窗口不需要支持窗口大小的调整,我们将属性resizable设置为false;
  5. 接着我们将窗口最大化的属性也禁用一下。


  • 完整代码如下
const win = new BrowserWindow({
    width: 380,
    height: 380,
    transparent: true,
    frame: false,
    resizable: false,
    maximizable: false,
    show: false,
    webPreferences: {
      // Use pluginOptions.nodeIntegration, leave this alone
      // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
      // nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
      // contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true
    }
  })
复制代码


调整渲染进程代码:

  1. 调整根组件样式,使之成为圆形:
html,
body {
  margin: 0px;
  padding: 0px;
  pointer-events: none;
}
#app {
  box-sizing: border-box;
  width: 380px;
  height: 380px;
  border-radius: 190px;
  border: 1px solid green;
  background: #fff;
  overflow: hidden;
  pointer-events: auto;
  text-align: center;
}
复制代码
  • 现在的效果如下图,四个角的颜色是桌面的壁纸的颜色。
    2.png
  1. 此时我们只是看起来是个圆形,但是四个角的部分触发的事件还是在窗口中,我们要做点击穿透;
  • 使用API:win.setIgnoreMouseEvents来动态设置是否忽略鼠标事件;
window.addEventListener('mousemove', event => {
  const flag = event.target === document.documentElement
  if (flag) {
    win.setIgnoreMouseEvents(true, { forward: true })
  } else {
    win.setIgnoreMouseEvents(false)
  }
})
win.setIgnoreMouseEvents(true, { forward: true })
复制代码


窗口的其他控制:


  1. 重写窗口关闭的处理(确认后再关闭):
window.onbeforeunload = function () {
  const { dialog } = remote
  dialog.showMessageBox(win, {
    type: 'warning',
    title: '离开此网站?',
    message: '系统可能不会保存您所做的更改。',
    buttons: ['离开', '取消']
  })
    .then((res) => {
    if (res.response === 0) {
      win.destroy()
    }
  })
  return false
}
复制代码
  1. 3.png
  2. 开启一个模态窗口,我们只有在关闭新打开的模块窗口后才能在原窗口继续操作,和模态Dialog一样;
this.win = new remote.BrowserWindow({
  parent: remote.getCurrentWindow(),
  modal: true,
  webPreferences: {
    nodeIntegration: true
  }
})
复制代码
  1. 4.png


总结:


     关于Electron的窗口就先介绍这么多,下一篇将开启界面相关内容的学习。



相关文章
|
10月前
electron解决创建新窗口html文件不能引入ipcRenderer通信
electron解决创建新窗口html文件不能引入ipcRenderer通信
|
Windows
Electron窗口白屏解决
Electron白屏问题主要出现在两方面: 1、electron未加载完毕html,electron自身产生的白色背景; 2、electron加载html,html处于加载渲染过程中产生的短暂白屏;
1978 0
|
1月前
|
JavaScript 开发工具
Electron 开发过程中主进程的无法看到 console.log 输出怎么办
Electron 开发过程中主进程的无法看到 console.log 输出怎么办
|
2月前
|
前端开发
PC端01,桌面端,electron的开发,electron的开发的系列课程,软件开发必备流程,electron的讲解,electron的开发,vitepress博主的gitee链接,PC端效率软件
PC端01,桌面端,electron的开发,electron的开发的系列课程,软件开发必备流程,electron的讲解,electron的开发,vitepress博主的gitee链接,PC端效率软件
PC端01,桌面端,electron的开发,electron的开发的系列课程,软件开发必备流程,electron的讲解,electron的开发,vitepress博主的gitee链接,PC端效率软件
|
4月前
|
移动开发 开发框架 JavaScript
Vue3 Vite electron 开发桌面程序
Vue3 Vite electron 开发桌面程序
295 0
|
UED
解决Electron窗口白屏问题的预创建方案
在使用Electron创建窗口时,有时会遇到窗口显示白屏的问题。这篇文章将介绍一种解决方案,即预创建窗口,并提供了针对窗口关闭和应用退出的管理方法,以确保 Electron 应用的顺畅运行和用户体验
631 0
|
10月前
|
前端开发 算法 JavaScript
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(下)
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(下)
148 0
|
10月前
|
存储 Web App开发 JavaScript
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(上)
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(上)
198 0
|
12月前
|
Web App开发 资源调度 前端开发
基于NeteaseCloudMusicApi和electron-vue开发网易云音乐--electron-vue初始化
基于NeteaseCloudMusicApi和electron-vue开发网易云音乐--electron-vue初始化
114 0
|
前端开发 API
Electron 渲染进程之间互相通信 创建窗口时触发
Electron 渲染进程之间互相通信 创建窗口时触发