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

如何在MAUI应用的BlazorWebView中清除浏览历史记录?

清除MAUI BlazorWebView的浏览历史记录

MAUI的BlazorWebView本身没有跨平台统一API直接清除浏览历史,需要针对不同平台的底层WebView组件操作,以下是各平台的具体实现方式:

Android平台

BlazorWebView在Android上的底层实现是Android.Webkit.WebView,直接获取该实例并调用清除方法即可:

#if ANDROID
var androidWebView = blazorWebView.Handler.PlatformView as Android.Webkit.WebView;
androidWebView?.ClearHistory();
#endif

iOS平台

iOS上的BlazorWebView基于WebKit.WKWebView,通过其BackForwardList属性清除历史记录(支持iOS 14及以上):

#if IOS
var wkWebView = blazorWebView.Handler.PlatformView as WebKit.WKWebView;
wkWebView?.BackForwardList.RemoveAll();
#endif

若需兼容iOS 13及更早版本,可通过加载空白页重置历史:

wkWebView?.LoadHtmlString(string.Empty, null);

Windows平台

Windows平台的BlazorWebView依赖WebView2组件,需调用CoreWebView2的异步方法清除历史数据:

#if WINDOWS
var webView2 = blazorWebView.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2;
if (webView2?.CoreWebView2 != null)
{
    await webView2.CoreWebView2.ClearBrowsingDataAsync(
        DateTimeOffset.MinValue, 
        DateTimeOffset.Now, 
        Microsoft.Web.WebView2.Core.CoreWebView2BrowsingDataKinds.History);
}
#endif

封装成扩展方法(可选)

为方便跨平台调用,可封装一个扩展方法:

public static class BlazorWebViewExtensions
{
    public static async Task ClearHistoryAsync(this BlazorWebView blazorWebView)
    {
#if ANDROID
        var androidWebView = blazorWebView.Handler.PlatformView as Android.Webkit.WebView;
        androidWebView?.ClearHistory();
#elif IOS
        var wkWebView = blazorWebView.Handler.PlatformView as WebKit.WKWebView;
        wkWebView?.BackForwardList.RemoveAll();
#elif WINDOWS
        var webView2 = blazorWebView.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2;
        if (webView2?.CoreWebView2 != null)
        {
            await webView2.CoreWebView2.ClearBrowsingDataAsync(
                DateTimeOffset.MinValue, 
                DateTimeOffset.Now, 
                Microsoft.Web.WebView2.Core.CoreWebView2BrowsingDataKinds.History);
        }
#endif
    }
}

调用时直接执行:

await blazorWebView.ClearHistoryAsync();

注意:需确保BlazorWebView已完成初始化(例如在页面OnAppearing事件之后,或BlazorWebView的Initialized事件中执行),否则可能无法获取有效的平台视图实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:50:05