【问题标题】:Xamarin forms webview not showing chart data in my deviceXamarin 表单 webview 未在我的设备中显示图表数据
【发布时间】:2020-02-25 08:50:50
【问题描述】:

我使用 WebView 通过 URL 显示数据,但我的图表视图未在 webview 中加载,我还为 webview 授予以下所有权限。

Control.Settings.JavaScriptEnabled = true;
Control.Settings.LoadWithOverviewMode = true;
Control.Settings.DatabaseEnabled = true;
Control.Settings.UseWideViewPort = true;
Control.Settings.AllowFileAccess = true;
Control.Settings.AllowContentAccess = true;
Control.Settings.AllowFileAccessFromFileURLs = true;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.Settings.JavaScriptCanOpenWindowsAutomatically = true;
Control.Settings.DomStorageEnabled = true;
Control.VerticalScrollBarEnabled = true;
Control.SetWebViewClient(new WebClient(this));

 class WebClient : WebViewClient
        {
            WebViewRendererForAndroid _renderer;
            public WebClient(WebViewRendererForAndroid renderer)
            {
                _renderer = renderer ?? throw new ArgumentNullException("renderer");
            }
            public override bool ShouldOverrideUrlLoading(AWebView view, string url)
            {
                try
                {
                    var Token = UserSettings.AccesToken;
                    Dictionary<String, String> headers = new Dictionary<String, String>();
                    headers.Add("Authorization", Token);
                    view.LoadUrl(url, headers);
                }
                catch (Exception ex)
                {
                }
                return true;
            }
            public override void OnReceivedError(AWebView view, IWebResourceRequest request, WebResourceError error)
            {
                base.OnReceivedError(view, request, error);
            }
            public override void OnReceivedHttpError(AWebView view, IWebResourceRequest request, WebResourceResponse errorResponse)
            {
                base.OnReceivedHttpError(view, request, errorResponse);
                var source = new UrlWebViewSource { Url = request.Url.ToString() };
                var args = new WebNavigatedEventArgs(WebNavigationEvent.NewPage, source, request.Url.ToString(), WebNavigationResult.Failure);
                _renderer.ElementController.SendNavigated(args);
            }
            public override void OnReceivedError(AWebView view, [GeneratedEnum] ClientError errorCode, string description, string failingUrl)
            {
                base.OnReceivedError(view, errorCode, description, failingUrl);
                var source = new UrlWebViewSource { Url = failingUrl };
                var args = new WebNavigatedEventArgs(WebNavigationEvent.NewPage, source, failingUrl, WebNavigationResult.Failure);
                _renderer.ElementController.SendNavigated(args);
            }

        }

【问题讨论】:

  • 聊天数据是否显示在浏览器中?
  • 是的,所有数据在浏览器中显示/加载,但在 webview 中不显示/加载。
  • 你能给我一个测试链接吗?
  • 抱歉,不可能
  • 好的,那么我很难重现这个问题。

标签: xamarin.forms webview android-webview webviewclient


【解决方案1】:

我已经使用javascript解决了这些问题,我们必须在页面加载完成后注入javascript函数。

public override void OnPageFinished(AWebView view, string url)
{
   base.OnPageFinished(view, url);

   view.LoadUrl("javascript:(loadData('" + Token + "'))");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多