WebView2 Eval 示例 - JavaScript 表达式求值
概述
演示 cWebView2Host 的 Script.Eval 方法,在 VB6 中同步执行 JavaScript 表达式并获取返回值。
项目结构
下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]
代码请到 VBMAN2 项目 demos/webview2/eval 目录获取。
eval/
├── Form1.frm # 主窗体,包含 JS 求值逻辑
├── pic/
│ └── eval.png # 运行效果截图
├── vbman2_webview2.vbp # VB6 项目文件
└── vbman2_webview2.vbw # VB6 工作区文件核心代码解析
1. 声明与初始化(Form1.frm)
vb
Dim wv As New cWebView2Host
Private Sub Form_Load()
wv.Initialize Me.hWnd, "https://vb6.pro"
End Sub2. JavaScript 求值
vb
Private Sub GetHtml_Click()
MsgBox wv.Script.Eval("return document.querySelector('.hero-title').innerHTML")
End SubScript.Eval 的关键特点:
- 代码中使用
return语句返回值 - 同步执行,直接获取返回值
- 支持完整的 JS 语法,包括 DOM 操作
功能说明
Script.Eval 方法
- 将 JS 代码包装为函数后执行
- 使用
return返回值到 VB6 - 同步执行,立即获取结果
DOM 查询
- 使用
document.querySelector()选择 DOM 元素 - 读取元素属性(innerHTML、textContent 等)
- 使用
技术要点
Eval vs JsRun 的区别:
Script.Eval(code)— 包装为 function 执行,需用return返回值JsRun(expression)— 直接执行表达式,自动返回结果
必须使用 return:Eval 将代码包装为
function EvalFuncName(){<code>},因此需要return才能传回值错误处理:如果 JS 代码抛出异常,Eval 会返回空字符串
应用场景
- 读取页面特定元素的文本或属性
- 执行复杂的 DOM 查询
- 计算 JS 表达式(如 JSON 处理、日期格式化等)
扩展建议
- 可以结合 Script.Eval 和 SetData 实现更灵活的数据读取
- 对于简单的属性读取,优先使用
JsProp或JsRun - 使用 Eval 执行多行复杂逻辑时,建议先在浏览器 Console 中验证