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

WinUI3+C++/WinRT中WebView2调用NavigateToString无内容显示求助

问题描述

在WinUI 3 + C++/WinRT开发场景下,使用WebView2的NavigateToString方法加载字符串形式的HTML内容时,控件无任何内容显示,但使用Source方法加载Web URI却能正常渲染。数月前测试NavigateToString可正常运行,当前环境版本:

  • Microsoft.Web.WebView2:1.0.6065.39
  • Microsoft.WindowsAppSDK:1.6.250205002

相关代码示例:
使用NavigateToString的代码:

std::string htmlContent = R"(
    <html>
    <body>
        <h1>Hello world!</h1>
    </body>
    </html>
)";
MyWebView.NavigateToString(winrt::to_hstring(htmlContent));

使用Source的代码:

Uri url(L"https://www.google.com");
MyWebView.Source(url);
可能的原因及解决方案
  • HTML字符串格式问题
    你的HTML内容包含大量前置缩进和换行,旧版本WebView2运行时对这类格式化字符串可能出现解析异常。尝试移除多余的缩进与换行,改用紧凑格式:

    std::string htmlContent = R"(<html><body><h1>Hello world!</h1></body></html>)";
    MyWebView.NavigateToString(winrt::to_hstring(htmlContent));
    
  • WebView2初始化未完成
    NavigateToString必须在WebView2控件完成核心初始化后调用,若在控件加载完成前执行会导致内容无法渲染。可通过监听CoreWebView2Initialized事件,确保初始化完成后再执行导航:

    MyWebView.CoreWebView2Initialized([this](auto const&, auto const&) {
        std::string htmlContent = R"(
            <html>
            <body>
                <h1>Hello world!</h1>
            </body>
            </html>
        )";
        MyWebView.NavigateToString(winrt::to_hstring(htmlContent));
    });
    
  • 版本兼容性bug
    当前使用的WebView2 1.0.6065.39属于较旧的稳定版,可能存在与Windows App SDK 1.6的兼容性问题。尝试升级WebView2运行时到最新稳定版,或降级至之前验证可用的版本。

  • 字符串编码转换异常
    winrt::to_hstring转换std::string时可能出现编码问题,建议直接使用std::wstring避免转换步骤:

    std::wstring htmlContent = LR"(
        <html>
        <body>
            <h1>Hello world!</h1>
        </body>
        </html>
    )";
    MyWebView.NavigateToString(htmlContent);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:03:12