【发布时间】:2019-10-31 04:58:09
【问题描述】:
我一直试图弄清楚为什么 web 视图中的一个弹出窗口在某些设备中显示黑屏。请看附件 URL 作为 URI 工作,但不在 webview 内。
注意:网址似乎有 javascript 问题。不知道为什么 android 9 会阻止其内容
[chromium] [INFO:CONSOLE(3)] "由于目标被视为被动,无法在被动事件侦听器中阻止默认值。请参阅https://www.chromestatus.com/features/5093566007214080",来源:https://mylink.com/js/libs/jquery/jquery.min.js (3)
编辑:我使用渲染来获取当前位置
xaml:
<local:GeoWebView x:Name="Webview" HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand" />
c#
Webview.Source = new UrlWebViewSource
{
Url=https://MyLink.com/thisismytesturl.htm
};
渲染安卓:
public class GeoWebViewRenderer : WebViewRenderer
{
public GeoWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
Control.Settings.JavaScriptEnabled = true;
Control.Settings.DomStorageEnabled=true;
Control.Settings.JavaScriptCanOpenWindowsAutomatically=true;
Control.SetWebChromeClient(new MyWebClient());
}
}
public class MyWebClient : WebChromeClient
{
public override void OnGeolocationPermissionsShowPrompt(string
origin, GeolocationPermissions.ICallback callback)
{
callback.Invoke(origin, true, false);
}
}
【问题讨论】:
-
应该显示什么
-
页面是如何加载的?本地源 HTML、URL、URL 但已编辑代码?
-
1.您如何更新任何 WebClient 代码或您是否使用标准客户端? 2. 您是否编辑过 webview 的任何属性? 3.当你使用该设备的默认浏览器时,你看到黑屏了吗?
-
您能否在以下位置设置断点:protected override void OnElementChanged(ElementChangedEventArgs
e) {} 并检查单击弹出窗口时是否命中了该函数?它是否每次都重新创建一个新的网络客户端? -
在停止工作之前对代码进行了哪些更改?还是在您触摸它之前弹出窗口没有工作?
标签: android http xamarin.forms webview android-9.0-pie