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

如何获取.NET MAUI WebView当前显示的HTML?官方文档无相关说明

获取.NET MAUI WebView当前显示的HTML的方法

可以获取WebView当前显示的HTML内容,核心是通过WebView执行JavaScript代码来实现,具体操作如下:

核心实现步骤

  • 调用WebView的EvaluateJavaScriptAsync方法,执行获取HTML的JS脚本,直接拿到当前页面的HTML字符串:
    // 假设你的WebView控件实例名为MyWebView
    string fullPageHtml = await MyWebView.EvaluateJavaScriptAsync("document.documentElement.outerHTML");
    // 若仅需body部分内容,可替换为:
    // string bodyHtml = await MyWebView.EvaluateJavaScriptAsync("document.body.innerHTML");
    
    注意:返回的字符串会带有JSON转义符(如\"),如需还原原始格式,可通过System.Text.Json.JsonSerializer.Deserialize<string>(fullPageHtml)处理。

针对JS动态修改后的获取场景

如果需要在JavaScript修改HTML内容后自动获取,可通过.NET与JS的双向通信实现:

  1. 在.NET端注册回调:
    // 页面初始化时注册JS触发的回调
    MyWebView.AddJavascriptChannel("HtmlUpdateChannel", jsValue =>
    {
        // 收到JS通知后,立即获取最新HTML
        _ = Task.Run(async () =>
        {
            string updatedHtml = await MyWebView.EvaluateJavaScriptAsync("document.documentElement.outerHTML");
            // 此处处理HTML,提取所需元数据
        });
    });
    
  2. 在JS端触发通知:
    当JS完成HTML修改后,调用以下代码通知.NET端:
    // 不同平台的调用方式略有差异,以下是通用兼容写法
    if (window.chrome?.webview) {
        chrome.webview.postMessage("html_updated");
    } else if (window.webkit?.messageHandlers?.HtmlUpdateChannel) {
        window.webkit.messageHandlers.HtmlUpdateChannel.postMessage("html_updated");
    }
    

注意事项

  • 确保WebView的IsJavaScriptEnabled属性设置为true(默认启用),否则无法执行JS脚本。
  • 需等待WebView页面加载完成或JS修改操作完成后再调用获取方法,避免返回空值或异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:01:44