创建浏览器实例
CefBrowserHost::CreateBrowser
访问URL
通过GetMainFrame函数,然后调用LoadURL
执行JS代码
通过GetMainFrame函数,然后调用ExecuteJavaScript
frame
一个网页有多个frame,有一个mainframe和多个subframe,发送消息时,将frame的id放入参数中一起发过去,接收时消息时,获取frameid,就可以实现指定frame通讯。因为frameid是一个int64类型的数据,所以发送时将它分解为两个int32
的高低位数据,接收数据时,再将两个int32的数据拼接成一个int64数据
进程
cef存在两种进程,render进程和browser进程
render进程
负责显示web页面,执行javascript代码
v8引擎的初始化是在render进程中调用的,所以javascript代码是在render进程中执行的
当你调用frame->ExecuteJavaScript()
也仅仅是将代码发送到render进程执行
browser进程
创建windows系统的客户端窗口的进程
一般我们的webrtc sdk和我们的C++代码应该执行在browser进程
进程通信
这样就引入了本文要讲的问题,运行在browser进程的c++代码如何给render进程中javascript传递数据。 两个进程的通信是通过发送进程间消息来完成的
查看当前浏览器的运行状态
在地址栏直接输入,查看当前的网页通信状态
chrome://webrtc-internals/
Cef3
参考
CEF和JS交互 - shenyantaoit - 博客园 (cnblogs.com)
Cef3 学习资料 - 朝十晚八 - 博客园 (cnblogs.com)
cefutil/doc/CEF_Close.md at master · fanfeilong/cefutil · GitHub
CEF 嵌入到MFC的流程,包括启动CEF以及CEF程序的关闭流程。_cef mfc_不甘平凡的小鸟的博客-CSDN博客
git-repo | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
Chromium OS 镜像使用帮助 - 清华大学开源软件镜像站使用帮助 - 开发文档 - 文江博客 (wenjiangs.com)