xamarin - 具有本地内容的 Xamarin.Forms WebView 未触发导航事件
问题描述
我在这里实现了HybridWebView 。
我想检测页面何时完成加载,但导航事件似乎没有触发。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:lib="clr-namespace:Xam.Forms.MyStuff"
x:Class="Xam.Forms.MyStuff.HybridWebView">
<ContentPage.Content>
<lib:HybridWebView x:Name="hybridWebView" Uri="index.html"
Navigated="HybridWebView_Navigated"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>
</ContentPage.Content>
</ContentPage>
为什么导航事件不触发?是因为源内容是在本地加载的,而不是使用实际的 URL?如果是这样,是否有其他方法可以检测本地来源的 html 文件何时完成加载?
我什至可以在单个渲染器中检测它。
解决方案
在特定于平台的渲染器中创建元素并捕获事件。以下示例适用于 UWP,但该模式也适用于 iOS 和 Android。
在 OnElementChanged 事件中,创建本机 WebView 元素并分配事件处理程序:
if(Control == null)
{
var webView = new Windows.UI.Xaml.Controls.WebView();
{
webView.Navigate(uri);
};
webView.NavigationStarting += WebView_NavigationStarting;
}
创建事件处理程序:
private void WebView_NavigationStarting(Windows.UI.Xaml.Controls.WebView sender, Windows.UI.Xaml.Controls.WebViewNavigationStartingEventArgs args) {}
推荐阅读
- python - 遍历具有多个条件的所有行
- c# - 按钮重复而不是一次加载相同的信息(C#)
- scikit-learn - 欧几里得距离是否测量语义相似度?
- jupyter-notebook - 学生在 nbgrader 中提交作业后更新测试以对其评分
- php - 付款确认php+android
- android - 有没有办法批准用户将数据插入到android中的firebase数据库中?
- sql-server - 无法访问 SQL Server 数据库镜像服务器
- node.js - 多阶段 Dockerfile 导致空间不足
- ios - `Protocol 的问题只能用作通用约束,因为它具有 Self 或关联的类型要求`
- r - 将间隔文本数据转换为数据框