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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:25:18