vue3与cef3交互

cef版本:92.0.27+g274abcf+chromium-92.0.4515.159_windows64

node:v22.22.0

vue: "^3.5.26"

1、vue3组件调用C++方法:

C++中:

cpp 复制代码
RenderDelegate::OnWebKitInitialized()
{
	  CefRefPtr<CefV8Handler> handler = m_v8handler;
	  std::string app_code =
		  "var APP;"
		  "if (!APP)"
		  "    APP= {};"
		  "(function() {"

		  "    APP.call_c_p_p= function(param,callback) {"
		  "        native function call_c_p_p();"
		  "        return call_c_p_p(param,callback);"
		  "     };"

		  "})();";

	  CefRegisterExtension("v8/APP", app_code, handler);
}

Vue3组件中:

javascript 复制代码
const handleFunc = async () => {
        if (typeof (window.APP) == "undefined") {
    }
    else {
        var ret = window.APP.call_c_p_p("msg param", (result) => {
            alert("result:" + result);
        });
    }
    return
}

2、C++调用vue3:

C++代码:

cpp 复制代码
CefRefPtr<CefBrowser> browser = context->GetRootWindowManager()->GetActiveBrowser();
CString callparam;

callparam.Format(_T("call_vue('%s');"), _T("来自CEF3的调用"));

browser->GetMainFrame()->ExecuteJavaScript(callparam.GetBuffer(), browser->GetMainFrame()->GetURL(), 0);

Vue组件:

javascript 复制代码
onMounted(() => {
window.call_vue = (param) =>
{
	alert("receive msg from CEF3: " + param);
}
})

不管是vue调C++还是C++调vue,vue中都要通过window对象来访问。

相关推荐
by组态2 小时前
Ricon组态系统通信配置指南
前端·后端·物联网
可涵不会debug2 小时前
LangChain 文本分割器详解:字符分割、Token 分割、硬约束递归分割实战
java·前端·数据库
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(四)
前端
LEE2 小时前
Agent 的控制权,为什么正在回到模型手里?
前端·后端
沃夫上校2 小时前
跨域这件事,其实浏览器在替你挡刀
前端·后端·nginx
十年一梦惊觉醒2 小时前
快手视频发布助手,全自动视频发布带货工具
开发语言·前端·javascript
Solara2 小时前
中文字体子集化实录:3.2MB → 200KB 的完整脚本、踩坑清单与三条反直觉经验
前端·css·架构
Htr_3 小时前
Cortex 使用指南:开源 API 知识层
前端·数据库·人工智能·重构·计算机外设
计算机魔术师3 小时前
Dario Amodei 发文呼吁 AI 行业放慢前沿速度并公布三步计划
前端
EatFan3 小时前
前后端分离项目中 Token 到底应该怎么设计?Access Token + Refresh Token 实战
java·前端·后端