如何禁用WebView2导航失败时的自动重试导航功能?
禁用WebView2导航失败自动重试功能的方法
WebView2默认会在导航失败后自动重试目标URL,要禁用这一行为,最可靠的方式是通过监听CoreWebView2.NavigationStarting事件,识别重试请求并取消导航:
- 先确保WebView2控件已完成初始化,成功获取
CoreWebView2实例 - 注册
NavigationStarting事件处理程序,在回调中做以下操作:- 结合之前记录的导航失败URL,或通过
NavigationStartingEventArgs.IsRedirect属性判断当前导航是否为自动重试请求 - 确认是自动重试后,将
NavigationStartingEventArgs.Cancel设为true,终止本次导航
- 结合之前记录的导航失败URL,或通过
以下是C#代码示例:
// 假设webView2是已初始化完成的WebView2控件实例 webView2.CoreWebView2.NavigationStarting += CoreWebView2_NavigationStarting; private string _lastFailedUrl; // 先在导航失败事件中记录失败的URL private void CoreWebView2_NavigationFailed(object sender, CoreWebView2NavigationFailedEventArgs e) { _lastFailedUrl = e.Uri; } private void CoreWebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e) { // 匹配到上次失败的URL且非用户主动触发的导航时,取消重试 if (e.Uri == _lastFailedUrl && !e.IsUserInitiated) { e.Cancel = true; _lastFailedUrl = null; // 重置记录,避免影响后续正常导航 } }
目前WebView2官方没有提供直接禁用自动重试的开关,通过事件拦截是最灵活的实现方式。注意要准确区分自动重试和用户主动发起的导航,避免误拦截正常操作。
内容的提问来源于stack exchange,提问作者Khalid Almannai
相关产品推荐
相关产品推荐

