Skip to content

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 Sub

2. JavaScript 求值

vb
Private Sub GetHtml_Click()
    MsgBox wv.Script.Eval("return document.querySelector('.hero-title').innerHTML")
End Sub

Script.Eval 的关键特点:

  • 代码中使用 return 语句返回值
  • 同步执行,直接获取返回值
  • 支持完整的 JS 语法,包括 DOM 操作

功能说明

  1. Script.Eval 方法

    • 将 JS 代码包装为函数后执行
    • 使用 return 返回值到 VB6
    • 同步执行,立即获取结果
  2. DOM 查询

    • 使用 document.querySelector() 选择 DOM 元素
    • 读取元素属性(innerHTML、textContent 等)

技术要点

  1. Eval vs JsRun 的区别

    • Script.Eval(code) — 包装为 function 执行,需用 return 返回值
    • JsRun(expression) — 直接执行表达式,自动返回结果
  2. 必须使用 return:Eval 将代码包装为 function EvalFuncName(){<code>},因此需要 return 才能传回值

  3. 错误处理:如果 JS 代码抛出异常,Eval 会返回空字符串

应用场景

  1. 读取页面特定元素的文本或属性
  2. 执行复杂的 DOM 查询
  3. 计算 JS 表达式(如 JSON 处理、日期格式化等)

扩展建议

  1. 可以结合 Script.Eval 和 SetData 实现更灵活的数据读取
  2. 对于简单的属性读取,优先使用 JsPropJsRun
  3. 使用 Eval 执行多行复杂逻辑时,建议先在浏览器 Console 中验证

VB6及其LOGO版权为微软公司所有