electron进程通信之预加载脚本和渲染进程对主进程通信

主进程和预加载脚本通信

  • 主进程 mian,js 和预加载脚本preload.js,
  • 在主进程中创建预加载脚本,
const createWindow = () => {// Create the browser window.const mainWindow = new BrowserWindow({width: 300,height: 300,// 指定预加载脚本webPreferences: {preload: path.join(__dirname, "preload.js"),nodeIntegration: true},// frame: false, //隐藏标题栏transparent: true});//每次启动弹出调试框mainWindow.webContents.toggleDevTools();// 加载页面文件mainWindow.loadFile(path.resolve(__dirname, "index.html"));// 加载外部链接// mainWindow.loadURL('')// 打开开发工具// mainWindow.webContents.openDevTools()
};
app.whenReady().then(() => {createWindow();app.on("activate", () => {// 在 macOS 系统内, 如果没有已开启的应用窗口// 点击托盘图标时通常会重新创建一个新窗口if (BrowserWindow.getAllWindows().length === 0) createWindow();});
});
  • 在主进程中使用ipcMain这个api进行事件监听,假设监听 ‘ceshi’ 这个事件,下面在这个
//这段代码放到main.js最后就行
ipcMain.on('ceshi', () => {console.log('11111111111')
})
  • 预加载脚本 使用ipcRenderer.send发送事件
  • preload.js 全部代码
const { ipcRenderer } = require("electron");
ipcRenderer.send('ceshi')
  • 结果
    在这里插入图片描述

渲染进程和预加载脚本通信

  • 使用contextBridge.exposeInMainWorld全局变量,预加载脚本里面的window和渲染进程里面的winodw不是通信
  • 预加载代码
const { ipcRenderer, contextBridge } = require("electron");
contextBridge.exposeInMainWorld('api', {//将fn这个方法变为全局变量 可以在渲染进程这种访问fn: () => {ipcRenderer.send('ceshi')}})
  • 渲染进程代码
// 在dom渲染完之后获取dom
// 为了方便测试在index页面写了一个button 通过点击事件测试通信
window.addEventListener('DOMContentLoaded', () => {const btn = document.querySelector('#btn')console.log(window)btn.addEventListener('click', () => {window.api.fn()})
})
  • 结果
    在这里插入图片描述

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

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

相关文章

el-table表格动态添加列。多组数据拼接和多层级数据的处理

提示&#xff1a;el-table表格动态添加列 文章目录 前言一、多组数据拼接二、多层级处理三、实际应用中&#xff0c;为避免闪屏&#xff0c;可以表格数据统一渲染总结 前言 需求&#xff1a;富文本编辑器 一、多组数据拼接 <template><div class"test">…

鸿蒙HarmonyOs:为什么不支持热更新?

学习了一段时间的鸿蒙开发&#xff0c;发现鸿蒙开发还是比较简单的&#xff0c;今天突然心血来潮&#xff0c;研究了一下鸿蒙热更新&#xff0c;最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言&#xff0c;ArkTs又是基于TypeScript语言的&#xff0…

Linux mcd命令教程:如何在MS-DOS文件系统中切换工作目录(附实例教程和注意事项)

Linux mcd命令介绍 mcd是mtools工具的指令&#xff0c;它用于在MS-DOS文件系统中切换工作目录。如果不加任何参数&#xff0c;它将显示当前所在的磁盘和工作目录。 Linux mcd命令适用的Linux版本 mcd命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限于Ubuntu…

八大算法排序@堆排序(C语言版本)

目录 堆排序大堆排序概念算法思想建堆建堆核心算法建堆的代码 排序代码实现 小堆排序代码实现时间复杂度空间复杂度 堆排序 堆排序借用的是堆的特性来实现排序功能的。大堆需要满足父节点大于子节点&#xff0c;因此堆顶是整个数组中的最大元素。小堆则相反&#xff0c;要求父节…

docker搭建Dinky —— 筑梦之路

简介 Dinky 是一个 开箱即用 、易扩展 &#xff0c;以 Apache Flink 为基础&#xff0c;连接 OLAP 和 数据湖 等众多框架的 一站式 实时计算平台&#xff0c;致力于 流批一体 和 湖仓一体 的探索与实践。 主要功能 其主要功能如下&#xff1a; 沉浸式 FlinkSQL 数据开发&#x…

极狐GitLab Helm Chart 已上线,玩转云原生极狐GitLab!

极狐GitLab 研发团队提供了极狐GitLab & Runner 的 Helm Chart&#xff0c;方便用户在 Kubernetes 相关环境上来安装和运行极狐GitLab & Runner。Helm Chart 已经上线 Artifact Hub &#xff1a; 使用指南 只需简单两步就可以开启极狐GitLab & Runner Helm Chart …

python flask图书管理系统带文档

python flask图书管理系统带文档。功能&#xff1a;登录&#xff0c;图书的增删改查&#xff0c;读者管理&#xff0c;借阅记录&#xff0c;有文档。 技术&#xff1a;python3,flask,mysql,html。 包含源码数据库文件文档。 源码下载地址&#xff1a; https://download.csd…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于碳捕集与封存-电转气-电解熔融盐协同的虚拟电厂优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到多个关键概念&#xff0c;让我们逐一解读&#xff1a; 碳捕集与封存&#xff08;Carbon Capture and Storage&#xff0c;CCS&#xff09;&a…

【Linux操作系统】探秘Linux奥秘:日志管理的解密与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS &…

Mybatis-Plus乐观锁配置使用流程【OptimisticLockerInnerInterceptor】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 1.乐观锁实现 1.配置插件 1.XML方式 <bean class"com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerI…

企业微信开发:自建应用:应用形态(网页,小程序,默认页面)

概述 问题&#xff1a; 企业微信&#xff0c;自建应用&#xff0c;应该实现成什么样子&#xff1f;应用里是一个网页应用吗&#xff1f; 企业微信自建应用可以实现为多种形态&#xff0c;根据实际需求和功能设计&#xff0c;它可以是一个网页应用、一个小程序或者结合企业微信提…

vue3中pdf打印问题处理

1 get请求参数问题 之前的请求是post得不到参数&#xff0c;今天发现的问题很奇怪&#xff0c;从前端进入网关&#xff0c;网关居然得不到参数。 前端代码 const print () > {let linkUrlStr proxy.$tool.getUrlStr(proxy.$api.invOrder.psiInvOrder.printSalOutstock,{a…