IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> electron框架的webview标签使用以及preload设置 -> 正文阅读

[移动开发]electron框架的webview标签使用以及preload设置

使用webview标签是为了在主页面中嵌入其他web页面内容,类似小窗口

?

使用webview

1.主窗口对应的页面index.html

其中使用<webview>标签,src引入需要内嵌的web页面路径,可以是本地文件,也可以是远程请求,例如src=“https://www.douyin.com/”,引入抖音官网主页

然后通过<script>引入渲染脚本

2.主窗口主进程入口文件main.js

该文件中,创建主窗口,并在创建过程中 通过设置webPreferences的preload属性来引入预先加载的js脚本,通过设置webviewTag属性为true,才能在使用webview标签

该文件中,通过ipcMain.handle(eventName,function(){})来设置具体的事件处理过程,并返回一个结果,这个结果会在渲染进程中拿到

3.预加载脚本preload.js文件

该文件中,预先设置了一些自定义事件函数,这些函数被桥接在window上,当在renderer.js中调用window.pageClick.mainPageClick()时,会触发对主进程的通信,即ipcRenderer.invoke(eventName),该eventName与主进程中ipcMain.handle(eventName,())中的一致

4.主窗口渲染脚本renderer.js?

该文件中,获取dom节点,设置监听事件,然后通过调用window.pageClick.mainPageClick()这个预先定义在preload.js中的方法,来触发向主进程的通信,主进程对相应自定义事件进行处理,并返回处理结果,拿到结果后,可以对页面进行一些操作,例如文本展示或切换webview引入的页面内容

整个过程:页面定义dom结构,然后操作页面点击,触发在renderer.js里面的点击事件,从而调用window相应方法,触发在preload.js中预先设置的方法调用,从而渲染进程向主进程通信触发主进程事件,在main.js中收到来自渲染进程通信触发,进行具体事件处理,可能会有返回值,返回至renderer.js中,然后渲染进程可根据返回值做进一步的页面处理操作

5.给webview也设置预加载脚本

给webview标签设置preload属性,并引入对应脚本路径,可以是相对路径

6.webview中引入的web页面test.html

需要引入对应的webRenderer.js文件

7.webview中预先加载的脚本文件webviewPreload.js

同样可以设置一些自定义事件,桥接在window上

8.webview中引入的渲染脚本webRenderer.js

该文件中,获取dom节点,监听事件,触发事件处理函数

9.界面运行后效果

通过点击test1模块,触发事件,会在红色区域显示文字

通过点击主窗口左侧栏首页,可切换webview显示的web页面内容

几个注意点:

1.所有的具体事件处理,即ipcMain.handle()都定义在主窗口主进程main.js文件中

2.在主窗口的渲染进程renderer.js中,无法触发在webview引入的页面对应的预加载文件webviewPreload.js中定义的事件

3.在webview引入的页面对应的渲染进程webRenderer.js中,也无法触发在主窗口的预加载文件preload.js中定义的事件?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:13:15  更:2022-04-01 00:15:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 20:12:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码