当前位置: 首页 > news >正文

2、electron vue3 怎么创建子窗口,并给子窗口路由传参

接上回初始化vue3 electron项目,创建完vue3 electron项目后,现在要实现在渲染进程中点击按钮创建一个新的子窗口

开始

子窗口创建操作只能在主线程内完成,而创建操作是在渲染线程触发,因此就需要进行两者间的通讯。

1、创建子窗口

background.js

//引入ipcMain
import { app, protocol,nativeImage, BrowserWindow,ipcMain } from 'electron'
...
...
// 创建提醒窗口function openChildWindow(e) {var childWin = new BrowserWindow ({width: 330,height:170,title:'待办提醒',alwaysOnTop:true,x:e.screenWidth-330,y:e.screenHeight-170,autoHideMenuBar: true,webPreferences: {nodeIntegration: true,contextIsolation: false,}})if (process.env.WEBPACK_DEV_SERVER_URL) {// 开发环境跳转路由,/remind就是配置的路由地址,并携带参数childWin.loadURL(process.env.WEBPACK_DEV_SERVER_URL + `#/remind?id=${e.id}`)if (!process.env.IS_TEST) childWin.webContents.openDevTools()} else {// 打包后跳转地址 /remind就是配置的路由地址createProtocol('app')childWin.loadURL(`app://./index.html#/remind?id=${e.id}`);}childWin.on("close", function(){childWin = null;})}// ipc通讯,触发创建操作ipcMain.on('on-open-event', (e,data) => {openChildWindow(JSON.parse(data))})

2、新建preload.js

const { ipcRenderer } = require('electron');window.myApi = {openWindow: (e) => {console.log(e);ipcRenderer.send('on-open-event',JSON.stringify(e))},
}

3、在background.js的创建主窗口配置中引入preload.js文件

...
...
const win = new BrowserWindow({width: 400,height: 700,title:'待办记事本',frame: false, // 去掉窗口边框 // 取消默认的头部;自定义头部autoHideMenuBar: true, // 隐藏菜单栏autoHideMenuBar: true,icon:path.join(__dirname, '../public/logo.ico'),webPreferences: {nodeIntegration: true,contextIsolation: false,enableRemoteModule: true,preload: path.resolve(__dirname, "./preload.js")},})
...
...

4、在vue页面中调用,创建子窗口方法

// 打开子窗口
function open(e){e.screenHeight = window.screen.heighte.screenWidth = window.screen.width// e是我带过去的一些参数,不需要可以不用管,自行调整一下window.myApi.openWindow(e)
}

http://www.lryc.cn/news/446660.html

相关文章:

  • 8.pod数据持久化
  • C语言 | Leetcode C语言题解之第436题寻找右区间
  • SpringBoot3中ymal配置文件(持续更新)
  • Linux 基础IO 2
  • 图像预处理 图像去噪之常见的去噪方法
  • 代码随想录Day53|102.沉没孤岛 、103.水流问题 、104.建造最大岛屿
  • 19c-pfile
  • 智能软件开启精准品牌控价
  • OpenCV特征检测(8)检测图像中圆形的函数HoughCircles()的使用
  • spark 大表与大表join时的Shuffle机制和过程
  • 大厂面试真题:简单说下Redis的bigkey
  • 18 vue3之自动引入ref插件深入使用v-model
  • 【Spring】lombok、dbUtil插件应用
  • 【学习笔记】WSL
  • python assert 断言用法
  • MySQL事务、索引、数据恢复和备份
  • 什么是chatgpt?国内有哪些类gpt模型?
  • ISP基本框架及算法介绍 ISP(Image Signal Processor)
  • Stable Diffusion 的 ControlNet 主要用途
  • 矩阵分析 学习笔记4 内积与Gram矩阵
  • iOS 消息机制详解
  • 深入理解Spring Data JPA与接口编程
  • Wireshark学习使用记录
  • OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用
  • 力扣 中等 445.两数相加 II
  • 华为云徐峰:AI赋能应用现代化,加速软件生产力跃升
  • C发送邮件技巧:如何批量发送个性化邮件?
  • 基于python+spark的外卖餐饮数据分析系统设计与实现(含论文)-Spark毕业设计选题推荐
  • 权限维持——Linux
  • 申请SSL证书闭坑方法