Xamarin WebView:在OnWebViewNavigating中匹配指定URL时实现重定向
Xamarin.Forms WebView 重定向指定URL解决白屏问题
核心解决思路
在WebNavigating事件中拦截目标URL,取消默认导航行为,手动加载正确的重定向地址,避免WebView因无法解析原URL导致白屏。
修改后的代码实现
public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); webView.Navigating += OnWebViewNavigating; webView.Navigated += OnWebViewNavigated; } private void OnWebViewNavigating(object sender, WebNavigatingEventArgs e) { // 匹配支付提供商返回的目标URL前缀 if (e.Url.StartsWith("xxxxx")) { // 取消当前失败的导航请求 e.Cancel = true; // 替换为正确的重定向地址 var correctUrl = "你的正确重定向地址"; // 让WebView加载正确地址 webView.Source = new UrlWebViewSource { Url = correctUrl }; } } private void OnWebViewNavigated(object sender, WebNavigatedEventArgs e) { // 可选:导航完成后的逻辑,比如隐藏加载状态提示 } }
关键说明
e.Cancel = true:必须先取消原导航,否则WebView会继续尝试加载无法解析的URL,依然会出现白屏。- 动态生成重定向地址:如果需要从原URL提取参数拼接新地址,可基于
e.Url做字符串处理,示例:// 提取原URL的查询参数拼接到新地址 var queryParams = e.Url.Contains('?') ? e.Url.Substring(e.Url.IndexOf('?')) : ""; var correctUrl = $"https://your-valid-domain.com/target-path{queryParams}"; - 跨平台兼容性:上述实现基于Xamarin.Forms层,无需针对Android/iOS单独写原生代码,适配性更强。
内容的提问来源于stack exchange,提问作者Niels Lucas
相关产品推荐
相关产品推荐

