xamarin.forms - Xamarin.Forms ERR_FILE_NOT_FOUND (file:///android_asset/Content/https://stackoverflow.com) 使用 HybridWebViewSample
问题描述
我按照帖子创建了一个自定义 WebView 以与客户端 JavaScript 交互:https ://docs.microsoft.com/es-es/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview
但是当我尝试加载页面时,例如https://www.google.es,wevView 显示“ERROR_FILE_NOT_FOUND”加载页面“file:///android_asset/Content/ https://www.google.es "
这是 HybridWebViewRenderer 的 OnElementChanged:
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
Control.RemoveJavascriptInterface("jsBridge");
((HybridWebView)Element).Cleanup();
}
if (e.NewElement != null)
{
Control.SetWebViewClient(new JavascriptWebViewClient($"javascript: {JavascriptFunction}"));
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
Control.LoadUrl($"file:///android_asset/Content/{((HybridWebView)Element).Uri}");
}
}
编辑:似乎 hybridWebView 不适用于外部页面!
有什么建议吗?
解决方案
解决了:
更改 LoadUrl 方法:
Control.LoadUrl($"file:///android_asset/Content/{((HybridWebView)Element).Uri}");
经过:
UrlWebViewSource source = Element.Source as UrlWebViewSource;
Control.LoadUrl(source.Url);
适用于外部网络,可以检索 JavaScript 回调并发送 JavaScript 代码。这是完整的代码:
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
Control.RemoveJavascriptInterface("jsBridge");
((HybridWebView)Element).Cleanup();
}
if (e.NewElement != null)
{
Control.SetWebViewClient(new JavascriptWebViewClient($"javascript: {JavascriptFunction}"));
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
UrlWebViewSource source = Element.Source as UrlWebViewSource;
Control.LoadUrl(source.Url);
}
}
推荐阅读
- javascript - 有人可以解释如何使用插件 vuejs-progress-bar
- python - 错误:找不到满足 kivy-deps.angle 要求的版本(来自版本:无)
- matlab - 使用 Filtering、butterworth、filtfilt 命令去除相位差
- google-cloud-platform - Firestore:使用扩展 firestore-bigquery-export 将多个集合/子集合同步到 BigQuery
- c - CS50 模糊功能未通过 check50,即使图像正在模糊
- flutter - 拖动 Pageview 时,PageView 中的动画会丢失
- sql-server - 填充表“users”更新列“Additional_field_1”,列“ID”,7个随机数没有前两个数字是列“ID”
- mongodb - 如何在不通过 mongoengine 省略的情况下将 mongodb 归档值更新为 null?
- java - DecimalFormat 分组符号的不同表示
- android - Expo admob 插件错误加载生产广告