Xamarin.UWP平台WebView本地网页跳转其他本地页面无法打开问题求解
Xamarin.Forms UWP平台WebView本地网页跳转异常解决方案
前置资源配置
先确认UWP项目中本地帮助资源的配置正确:
- 把
HelpFolder整个文件夹放到UWP项目根目录下 - 选中文件夹内所有html、css、js、图片等资源文件,在属性面板设置:
- 生成操作:
内容 - 复制到输出目录:
如果较新则复制
- 生成操作:
核心修复逻辑
无需修改你原有三个平台的GetBaseUrl实现,只需要在共享项目创建WebView时,添加Navigating事件拦截逻辑,主动处理本地页面跳转即可:
var files = DependencyService.Get<IFiles>(); var baseUrl = files.GetBaseUrl(); var webView = new WebView(); // 初始加载首页 webView.Source = Path.Combine(baseUrl, "HelpFolder", "index.htm"); // 拦截导航事件修复本地跳转问题 webView.Navigating += (s, e) => { // 仅处理本地资源跳转 if (e.Url.StartsWith("ms-appx-web:///") || e.Url.StartsWith("file://")) { e.Cancel = true; ((WebView)s).Source = new UrlWebViewSource { Url = e.Url }; } }; Content = webView;
可选配置(修复资源加载异常)
如果依然存在CSS、JS无法正常加载的问题,打开UWP项目的Package.appxmanifest,在「功能」标签页勾选两个权限即可:
- Internet(客户端)
- 私有网络(客户端和服务器)
这两个权限仅用于解除UWP WebView对本地资源加载的限制,完全离线场景下也不会触发任何网络请求。
该方案下,网页内的相对路径跳转、静态资源引用都可以正常运行,无需对现有HTML内容做任何修改,也不需要使用官方复杂的本地HTML加载方案。
内容的提问来源于stack exchange,提问作者Maxi King
相关产品推荐
相关产品推荐

