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

Windows Forms中WebView2打开资源管理器后空白窗口如何关闭?

WebView2点击search-ms链接后残留空白窗口的解决办法

问题原因

点击带有target="_blank"的search-ms协议链接时,WebView2会尝试创建新窗口加载该协议,但search-ms是系统资源管理器专属协议,无法在WebView2窗口中解析加载,导致新窗口变成空白的about:blank页面残留。

解决方法

方法一:拦截新窗口创建事件(推荐,无需修改网页)

通过监听WebView2的CoreWebView2.NewWindowRequested事件,拦截search-ms协议的新窗口请求,直接调用系统默认程序打开资源,同时取消默认的新窗口创建行为。

C#示例代码:

private void WebView2_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
{
    if (e.IsSuccess)
    {
        webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
    }
}

private void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
{
    if (Uri.TryCreate(e.Uri, UriKind.Absolute, out var uri) && 
        uri.Scheme.Equals("search-ms", StringComparison.OrdinalIgnoreCase))
    {
        // 调用系统默认程序打开search-ms链接
        System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(uri.AbsoluteUri) { UseShellExecute = true });
        // 标记事件已处理,阻止创建新窗口
        e.Handled = true;
    }
}

方法二:修改网页链接属性(若有权限修改网页)

直接移除链接的target="_blank"属性,点击时WebView2会在当前窗口处理协议,完成后不会残留空白窗口。修改后的链接代码:

<a href="search-ms:crumb=&amp;crumb=location:C:%5CUsers" title="" class="img-Lazy-warp">Open Users</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:22:19