Qt嵌⼊浏览器(六)——QCefView实现JS通信接⼝
本篇简介
上⼀节中,我们完成了CEF各基本组件的封装,并完成了浏览器基本功能的实现。>>点这⾥回顾上节内容
本节我们将尝试扩展所实现的各组件,实现浏览器与页⾯的双向通信。
本篇的⼩⽬标:
实现浏览器与页⾯的双向通信
原理简述
上⼀节曾提到过,CEF应⽤在默认情况下包含很多⼦进程,这些进程会共享同⼀个执⾏⼊⼝。除了主进程的各类处理接⼝外,CEF还提供了各类⼦进程的处理接⼝。⽽页⾯到浏览器的消息通道就可以借助对渲染进程的控制来实现,整体流程如下:
1. 重载渲染进程的上下⽂初始化监听接⼝,获取V8上下⽂引⽤
2. 从V8上下⽂中获取所加载的窗⼝对象
3. 借助V8处理器定义消息通道函数
4. 向窗⼝对象中注册消息通道函数
完成上述步骤后,在页⾯调⽤对应的消息通道函数时,V8处理器则会相应地进⾏处理,从⽽完成消息的发送。
另⼀⽅⾯,实现浏览器到页⾯的消息通道和第⼆节中基于Qt WebEngine的⽅法类似,CEF也提供了执⾏JS脚本的⽅法,只需在页⾯中定义好对应的消息接⼝,并通过执⾏脚本⽅法执⾏该接⼝即可完成消息的发送。
因此,实现双向通道主要的问题集中在针对渲染进程处理和JS脚本执⾏的扩展上。接下来先就渲染进程处理进⾏说明。
js arguments渲染进程处理
为了实现对渲染进程的处理,我们⾸先需要向上⼀节中封装的QCefContext中添加对渲染进程⼊⼝的解析和处理。具体实现如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。