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

相关推荐
用户350144817921 分钟前
数据对比中的”平等性原则“
前端
yuki_uix2 分钟前
从扁平到层级:树形数据转换的工程化实践与设计哲学
前端·javascript
米丘2 分钟前
vue-router 5.x 关于 RouterLink 实现原理
前端·javascript·vue.js
前端嘣擦擦3 分钟前
mac 安装 nvm + node + npm(国内镜像 + 官方安装步骤)
前端·macos·npm
小码哥_常6 分钟前
Jetpack Compose 1.8 新特性来袭,打造丝滑开发体验
前端
哎哟喂_17 分钟前
Webpack 的按需引入的原理
前端
whisper7 分钟前
前端安全护航者:三分钟带你了解 jsencrypt
前端·javascript
free-elcmacom8 分钟前
C++ 函数占位参数与重载详解:从基础到避坑
java·前端·算法
远山枫谷11 分钟前
🎉告别 Vuex!Vue3 状态管理利器 Pinia 核心概念与实战指南
前端·vue.js
张西餐12 分钟前
前端项目如何引入大语言模型
前端