You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET WebView2如何从JavaScript返回数据?元素展开状态获取问题

解决WebView2中JavaScript向VB.NET返回数据的问题

第一步:确保JavaScript函数正确返回值

你的Is_Part_Expanded函数必须明确返回"Collapsed"或"Expanded"字符串,不能遗漏返回逻辑。示例代码如下:

function Is_Part_Expanded(partId) {
    // 替换为你实际的状态判断逻辑
    const targetElement = document.getElementById(partId);
    if (targetElement && targetElement.classList.contains('expanded-class')) {
        return "Expanded";
    } else {
        return "Collapsed";
    }
}

如果判断逻辑涉及异步操作(如等待元素加载),需要将函数改为异步并返回Promise,VB.NET端需对应处理异步返回。

第二步:在VB.NET中正确调用并解析返回值

WebView2的ExecuteScriptAsync是异步方法,返回Task(Of String)类型结果,且会将JavaScript返回值序列化为JSON格式字符串,需解析后使用。

异步调用(推荐,避免UI线程阻塞)

Imports Microsoft.Web.WebView2.Core

Async Function GetPartExpansionStatusAsync(webView As CoreWebView2, partId As String) As Task(Of String)
    ' 构造调用JS函数的代码,传入部件ID参数
    Dim jsInvokeCode As String = $"Is_Part_Expanded('{partId}');"
    ' 执行JS并获取JSON格式的返回结果
    Dim jsonResult As String = Await webView.ExecuteScriptAsync(jsInvokeCode)
    ' 去除JSON字符串的首尾引号,得到原始状态值
    Return jsonResult.Trim(""""c)
End Function

同步调用(仅适用于非UI线程场景)

若必须在同步上下文使用,可通过Result获取返回值,但不建议在UI线程使用,防止界面卡顿:

Function GetPartExpansionStatus(webView As CoreWebView2, partId As String) As String
    Dim jsInvokeCode As String = $"Is_Part_Expanded('{partId}');"
    Dim jsonResult As String = webView.ExecuteScriptAsync(jsInvokeCode).Result
    Return jsonResult.Trim(""""c)
End Function

常见问题排查

  • 仍返回undefined:先在WebView2开发者工具(按F12)中手动执行Is_Part_Expanded(你的部件ID),确认JS函数本身返回值是否正确,检查元素是否存在、判断条件是否有误。
  • JSON解析错误:确保JS返回的是纯字符串,若返回复杂对象,需用JSON解析库(如Newtonsoft.Json)反序列化。
  • 异步JS处理:若JS函数为异步(使用async/await),VB.NET端无需额外修改,ExecuteScriptAsync会自动等待Promise完成并返回最终结果。示例异步JS代码:
async function Is_Part_Expanded(partId) {
    // 模拟异步等待操作
    await new Promise(resolve => setTimeout(resolve, 100));
    const targetElement = document.getElementById(partId);
    return targetElement?.classList.contains('expanded-class') ? "Expanded" : "Collapsed";
}

内容的提问来源于stack exchange,提问作者Eric F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:18:11