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对象来访问。

相关推荐
申君健24864182772021 小时前
Vapor 核心数据结构:Block原理
前端
Csvn1 小时前
工程化专题 | 改完组件保存,浏览器毫无反应,重启 dev server 又好了——气不气?
前端
我有满天星辰1 小时前
Vue 指令完全指南:从 Vue 2 到 Vue 3 的演进与实战
前端·javascript·vue.js
光影少年1 小时前
RN 渲染原理:不依赖WebView,原生控件渲染
前端·react native·react.js·前端框架
小白学过的代码1 小时前
# flv.js / mpegts.js 播不了国标摄像头(H.265 + G.711A)?纯前端 Jessibuca 无后端方案(附完整代码)
前端·javascript·h.265
console.log('npc')1 小时前
AI Agent 前端流式渲染核心技术文档(SSE \+ WebSocket \+ 打字机渲染)
前端·人工智能·websocket
法外狂徒12 小时前
将 Pi Agent 接入 HagiCode 的实践之路
服务器·前端·人工智能
IT_陈寒2 小时前
React中useEffect的依赖项把我坑惨了
前端·人工智能·后端
广州华水科技2 小时前
单北斗GNSS在变形监测中的优势与应用分析
前端
程序员爱钓鱼3 小时前
Rust 变量与不可变性:为什么默认不能修改变量?
前端·后端·rust