我按照文章创建了一个custon WebView,以与客户端JavaScript:https://learn.microsoft.com/es-es/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview进行交互
但是,当我尝试加载一个页面时,例如,"file:///android_asset/Content/https://www.google.es“,wevView显示一个加载页面的"ERROR_FILE_NOT_FOUND”
这是OnElementChanged of HybridWebViewRenderer:
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似乎不适用于外部页面!
有什么建议吗?
发布于 2020-03-25 15:47:56
已解决:
更改LoadUrl方法:
Control.LoadUrl($"file:///android_asset/Content/{((HybridWebView)Element).Uri}");出自:
UrlWebViewSource source = Element.Source as UrlWebViewSource;
Control.LoadUrl(source.Url);与外部webs一起工作,可以检索JavaScript callBacks并发送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);
}
} https://stackoverflow.com/questions/60833563
复制相似问题