Net MAUI中获取WebView当前URL并保存最后访问链接的问题
.NET MAUI WebView 保存最后访问链接的问题修复
你的代码存在几个关键问题,导致保存功能失效:
- 事件未绑定:
webview_Navigated方法没有和WebView的Navigated事件关联,导航时根本不会触发保存逻辑 - URL获取方式错误:通过
WebView.Source取URL不可靠,导航后Source不会实时同步当前页面地址 - 构造函数内多余逻辑:刚初始化WebView时还未加载页面,
CanGoBack必定为false,那段返回按钮逻辑完全无效
修复步骤及代码修改:
1. 在XAML中绑定WebView的Navigated事件
确保你的WebView标签加上事件绑定:
<WebView x:Name="webhtmlll" Navigated="webview_Navigated" />
2. 修改URL获取与保存逻辑
直接使用NavigatedEventArgs里的Url(这是当前成功导航到的页面地址):
// 获取链接 private void webview_Navigated(object sender, WebNavigatedEventArgs e) { // 用事件参数的Url才是当前页面的正确地址 string currentUrl = e.Url; Preferences.Default.Set("uriInfo", currentUrl); }
3. 简化构造函数逻辑
删掉无用的返回按钮判断,并且Reload可以去掉(设置Source后WebView会自动加载):
public MainPage() { InitializeComponent(); string savedUrl = Preferences.Default.Get("uriInfo", "https://www.google.com/"); webhtmlll.Source = savedUrl; }
4. 优化返回按钮方法(可选)
调整OnBackButtonPressed的返回逻辑,更简洁:
protected override bool OnBackButtonPressed() { if (webhtmlll.CanGoBack) { webhtmlll.GoBack(); return true; } return base.OnBackButtonPressed(); }
这样修改后,每次WebView成功跳转到新页面,都会自动把当前URL保存到Preferences中,下次启动App时会自动加载最后访问的链接。
内容的提问来源于stack exchange,提问作者Дмитрий Хламов
相关产品推荐
相关产品推荐

