electron 使用两个页面(额外添加一个html文件)

需求:打开窗口 (加载本地的html页面) 并播放视频资源

环境

electron 28.1.3 + electron-forge 7.2.0

思路:因为要加载新弹出一个窗口并播放资源,可以自己加载一个外部的页面或者加载一个本地的页面,使用本地的会好些。让electron-forge在打包时额外加载一个html文件到项目中。

参考资料

代码

forge.config.ts (打包配置代码)

const config: ForgeConfig = {packagerConfig: {// 指定新增html资源配置extraResource:["./lib"]},rebuildConfig: {},makers: [new MakerSquirrel({}), new MakerZIP({}, ['darwin']), new MakerRpm({}), new MakerDeb({})],plugins: [new VitePlugin({// `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.// If you are familiar with Vite configuration, it will look really familiar.build: [{// `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.entry: 'src/main.ts',config: 'vite.main.config.ts',},{entry: 'src/preload.ts',config: 'vite.preload.config.ts',},{entry: 'src/renderer_order.js',config: 'vite.preload.config.ts',},],renderer: [{name: 'main_window',config: 'vite.renderer.config.ts',},],}),],
};

video.html (在项目路径下新增 lib目录中)

<!DOCTYPE html>
<html>
<head><title>Video Player</title>
</head>
<body style="margin: 0; padding: 0;"><video src="" controls autoplay style="width: 100%; height: 100vh;"></video>
</body><script>document.addEventListener('DOMContentLoaded', function() {// 获取 URL 查询参数const queryParams = new URLSearchParams(window.location.search);// 获取参数值const param1Value = queryParams.get('videoUrl');// 在控制台打印参数值console.log('videoUrl', param1Value);const video = document.querySelector('body > video')video.src = param1Value; // 设置视频文件的路径});
</script>
</html>

main.ts(调用代码)

// 显示视频窗口
const videvWinow =(videoUrl:string)=>{//videoUrl 为视频资源路径const { width, height } = screen.getPrimaryDisplay().workAreaSizeconst floatingWindow = new BrowserWindow({width: 800,height: 550,// alwaysOnTop: true, // 设置为总是在顶部// frame: false, // 去掉窗口边框// transparent: true, // 设置为透明resizable: true, // 设置为不可调整大小webPreferences: {preload: path.join(__dirname, 'preload.js'),nodeIntegration:true,webSecurity: false,webviewTag:true},});// 调整窗口的位置,x,y为坐标// floatingWindow.setPosition(x, y)// 设置窗口位置// const mainScreen = screen.getPrimaryDisplay();// const { width, height } = mainScreen.workAreaSize;// const x = width / 2 - 400; // 窗口宽度的一半// const y = height / 2 - 300; // 窗口高度的一半floatingWindow.setPosition(0, 10);// 打开视频页面调试// floatingWindow.webContents.openDevTools();const queryParams = {'videoUrl': videoUrl};const queryStr = new url.URLSearchParams(queryParams).toString();let videoHTML =  '/lib/video.html'if(MAIN_WINDOW_VITE_DEV_SERVER_URL){// 测试环境路径videoHTML =  '/lib/video.html'}else{// 正式环境路径videoHTML =  '/resources/lib/video.html'}const fileUrl = url.format({pathname: path.join(process.cwd(), videoHTML),search: queryStr});floatingWindow.loadURL(fileUrl);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/12711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏5(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言三段攻击攻击设置只对敌人造成伤害限制可以移动攻击问题 角色连续按四下攻击&#xff0c;最后会多a一下问题&#xff1a;站在原地连续攻击野猪&#xff0c;只有第一下攻击野猪才掉血&#xff0c;后面的攻击野猪不掉血源码完结 …

深⼊理解指针(5)

目录 1. 回调函数是什么&#xff1f;1.1 使用回调函数修改 2. qsort使⽤举例2.1 使⽤qsort函数排序整型数2.2 使⽤qsort排序结构数据按年龄排序2.3 使⽤qsort排序结构数据按名字排序2.4整体代码 3. qsort函数的模拟实现3.1 整型数组的实现3.2 结构体按名字排序实现3.3 结构体按…

蓝桥杯练习系统(算法训练)ALGO-941 P0601字符删除

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 编写一个程序&#xff0c;先输入一个字符串str&#xff08;长度不超过20&#xff09;&#xff0c;再输入单独的一个字符ch&#xff0c…

java数据结构与算法(二叉树中序遍历)

前言 二叉树的中序遍历是一种特定的遍历方法&#xff0c;按照左子树、根节点、右子树的顺序进行遍历。如果二叉树为空&#xff0c;则遍历结束并返回&#xff1b;否则&#xff0c;首先递归遍历左子树&#xff0c;然后访问根节点&#xff0c;最后递归遍历右子树 实现原理 中序…

JavaScript事件监听

JavaScript事件监听是指在某个元素上监听特定事件的触发&#xff0c;并在事件触发时执行相应的函数。事件可以是用户的鼠标操作、键盘操作、页面加载等等。 在JavaScript中&#xff0c;可以使用addEventListener方法来添加事件监听器。它接受三个参数&#xff1a;事件类型、要…

第3章Spring Boot进阶,开发社区核心功能【仿牛客网社区论坛项目】

第3章Spring Boot进阶&#xff0c;开发社区核心功能【仿牛客网社区论坛项目】 前言推荐项目总结第3章Spring Boot进阶&#xff0c;开发社区核心功能1.过滤敏感词2.发布帖子3.帖子详情4.事务管理5.显示评论6.添加评论7.私信列表8.发送私信9.统一处理异常10.统一记录日志 最后 前…

如何使用ffmpeg从mp3中删除ID3音频标签图像(或元数据)

本文介绍了如何使用ffmpeg从mp3中删除ID3音频标签图像(或元数据)的处理方法&#xff0c;对大家解决问题具有一定的参考价值&#xff0c;需要的朋友们下面随着小编来一起学习吧&#xff01; 问题描述 FFMPEG确实是一个很棒的工具.我知道它可以编辑ID3标签&#xff0c;甚至可以连…

Date计算年龄:

方法一&#xff1a; Date dateSimpleDateFormat(“yyyy-MM-dd”).parse(“2000-08-19); LocalDate localDateLocalDate.now(); LocalDate localDate1date.toInstant.atZone(ZoneId.systemDefualt()).toLocalDate(); Int ageLocalDate localDate1.getYear()-LocalDate local…

照片误删如何恢复?这些方法帮你重拾回忆!

手机照片是我们记录美好时刻的重要工具。但有时我们会因为不小心或者错误操作而导致珍贵照片的丢失。那些与家人、朋友共度的美好时刻、旅途中的风景、重要的纪念日&#xff0c;一旦删除&#xff0c;就如同从记忆中抹去&#xff0c;令人惋惜不已。幸运的是&#xff0c;随着科技…

Spring AOP(概念,使用)

目录 Spring AOPAOP是什么什么是Spring AOPAOP实际开发流程1. 引入依赖2. 编写AOP程序 Spring AOP详解Spring AOP中的核心概念Spring AOP的通知类型六种类型PointCutOrder(切面优先级) Spring AOP AOP是什么 Aspect Oriented Programminig(面向切面编程)切面指的是某一类特定…

Oceanbase 4.3特性解析:用物化视图来优化复杂查询

如果你是一位数据分析师&#xff0c;需要在包含数百万行数据的数据库中频繁地检索特定信息&#xff0c;而每次这样的查询都伴随着复杂的计算&#xff0c;耗费大量时间和资源。你可以考虑采用物化视图这一功能&#xff0c;提高查询效率。 物化视图是什么&#xff1f; 物化视图…

加快推进新质生产力,利驰牵手央视栏目助推电气行业数字化

利驰成功入围《信用中国》 4月22日&#xff0c;《信用中国》栏目选题会在北京顺利举行。利驰软件(苏州)有限公司创始人令永卓受邀参加此次选题会&#xff0c;并成功入围了《信用中国》栏目&#xff0c;利驰软件借助栏目组进入品牌建设与创新的战略新征程。 《信用中国》是一档…

Java-数据库连接(JDBC小白教学)

&#xff01;文章最后附有完整代码&#xff01; 目录 &#x1f516;JDBC概述 &#x1f516;JDBC连接数据库 &#x1f516;添加数据&#xff08;insert&#xff09; &#x1f516;修改数据&#xff08;Update&#xff09; &#x1f516;删除数据&#xff08;delete&#x…

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景创建应用平台地址随机生成快速创建应用头像应用名称应用描述…

VMware Workstation 17.5.2 Pro 发布,产品订阅模式首个重大变更

VMware Workstation 17.5.2 Pro 发布&#xff0c;产品订阅模式首个重大变更 基于 x86 的 Windows、Linux 桌面虚拟化软件 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-workstation-17/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页…

Python 全栈体系【四阶】(四十三)

第五章 深度学习 九、图像分割 3. 常用模型 3.4 DeepLab 系列 3.4.1 DeepLab v1(2015) 3.4.1.1 概述 图像分割和图像分类不一样&#xff0c;要对图像每个像素进行精确分类。在使用CNN对图像进行卷积、池化过程中&#xff0c;会导致特征图尺寸大幅度下降、分辨率降低&…

全志R128 SDK HAL 模块开发指南之PWM

PWM 模块介绍 脉冲宽度调制&#xff08;PWM&#xff09;是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用&#xff0c;方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 具有以下特点&#xff1a; 支持脉冲&#xff08;脉冲个数可配&#xf…

【java】异常与错误

Throwable包括Error和Expected。 Error Error错误是程序无法处理的&#xff0c;由JVM产生并抛出的。 举例&#xff1a;StackOverflowError \ ThreadDeath Expected Expected异常包括两类&#xff0c;即受检异常(非运行时异常)和非受检异常(运行时异常)&#xff0c;异常往往…

oracle 临时表 在sql 里面用完要删除吗

临时表 在sql 里面用完要删除吗 在Oracle数据库中&#xff0c;如果您使用的是ON COMMIT DELETE ROWS创建的临时表&#xff0c;那么当当前会话结束或者执行了显式的COMMIT或ROLLBACK操作后&#xff0c;表中的数据会自动被清除。这意味着通常情况下&#xff0c;您不需要手动删除…

阿里云服务器下,部署LNMP环境安装wordpress

目录 1 LNMP部署1、简单说明2、nginx部署3、php8 安装4、mysql8安装5、配置 nginx 实现支持 PHP 程序6、安装 php 组件7、测试 2 wordpress部署1、安装2、配置 总结 1 LNMP部署 1、简单说明 首先需要明白&#xff0c;LNMP指的是Linux、Nginx、MySQL、PHP。而如果使用阿里云服…