MauiWebChromeClient的OnProgressChanged方法未触发问题求助
解决WebView加载进度不触发的问题
问题根源
- 客户端设置时机太晚:你在
Navigating事件里才给WebView绑定自定义WebChromeClient,此时页面已经开始导航,初始加载进度的触发时机已经错过;且每次导航都会重复追加Handler映射,属于冗余操作。 - 映射配置位置错误:
AppendToMapping这类初始化配置逻辑不应该放在导航事件中,应该在WebView初始化前完成,且只执行一次。
修复方案
1. 调整Handler配置位置
修改MainPage.xaml.cs,将Handler映射代码移到页面构造函数中,确保WebView一初始化就绑定自定义客户端:
namespace MauiApp2 { public partial class MainPage : ContentPage { int count = 0; public MainPage() { InitializeComponent(); #if ANDROID // 仅在页面初始化时配置一次,避免重复执行 Microsoft.Maui.Handlers.WebViewHandler.Mapper.AppendToMapping("Custom", (handler, view) => { handler.PlatformView.Settings.CacheMode = Android.Webkit.CacheModes.Default; handler.PlatformView.Settings.SetAppCacheEnabled(true); handler.PlatformView.Settings.JavaScriptEnabled = true; // 提前绑定自定义WebChromeClient handler.PlatformView.SetWebChromeClient(new CustomWebViewClient(handler)); }); #endif } // 若Navigating事件无其他业务逻辑可直接移除,有需求则保留 void mywebview_Navigating(System.Object sender, Microsoft.Maui.Controls.WebNavigatingEventArgs e) { // 这里可放置导航开始时的其他逻辑,如显示加载提示 } } }
2. 完善自定义WebChromeClient
在CustomWebViewClient的OnProgressChanged方法中调用基类方法,避免破坏Maui原生WebView逻辑:
using Android.App; using Android.Webkit; using Microsoft.Maui.Handlers; using WebView = Android.Webkit.WebView; namespace MauiApp2.Platforms.Android { public class CustomWebViewClient : MauiWebChromeClient { private readonly Activity context; public CustomWebViewClient(IWebViewHandler handler) : base(handler) { context = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity; } public override void OnProgressChanged(WebView view, int newProgress) { // 调用基类方法,保留原生WebView行为 base.OnProgressChanged(view, newProgress); // 正常输出加载进度 Console.WriteLine($"加载进度:{newProgress}%"); } } }
3. 验证XAML配置
确保WebView的命名和事件绑定正确:
<WebView x:Name="mywebview" Navigating="mywebview_Navigating" Source="https://example.com" />
关键说明
- 提前在构造函数配置Handler,能让WebView从初始化阶段就使用自定义客户端,完整捕获从0到100的加载进度。
- 仅配置一次映射,避免重复执行冗余代码影响性能。
- 调用基类方法可保留Maui原生WebChromeClient的默认行为,防止引入未知问题。
内容的提问来源于stack exchange,提问作者Ahad Porkar
相关产品推荐
相关产品推荐

