【问题标题】:Webview showing a white blank page显示白色空白页的 Webview
【发布时间】:2018-05-28 09:37:53
【问题描述】:

我正在使用 webview 在我的应用程序中显示 Flipkart 网站。

除了一件事,一切都按需要正常工作:

当我点击 BuyNow 按钮时,选择变体视图变得可见。

此视图持续 1 秒,然后显示白色空白页。

是否需要在 webview 中启用任何设置才能显示此类视图?

我已经在 Stackoverflow 上解决了很多问题,但没有任何帮助。

我尝试在 webview 上设置 webchromeclient 及以下方法,但没有成功。

shopping_webview.getSettings().setAllowFileAccess(true);
                    shopping_webview.getSettings().setAllowContentAccess(true);
                    shopping_webview.getSettings().setAllowFileAccessFromFileURLs(true);
                    shopping_webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
                    shopping_webview.getSettings().setDomStorageEnabled(true);
                    shopping_webview.getSettings().setUseWideViewPort(true);
                    shopping_webview.getSettings().setLoadWithOverviewMode(true);
                    shopping_webview.getSettings().setLoadsImagesAutomatically(true);
                    shopping_webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

                shopping_webview.getSettings().setSupportMultipleWindows(true);
                shopping_webview.getSettings().setBuiltInZoomControls(true);
                shopping_webview.getSettings().setDisplayZoomControls(false);
                shopping_webview.getSettings().setJavaScriptEnabled(true);

【问题讨论】:

  • 请检查其他网站链接可能是网站上的这个问题。
  • 同一网站在手机上的 Chrome 网络浏览器中运行良好。

标签: android webview


【解决方案1】:
 webviewLink.getSettings().setLoadsImagesAutomatically(true);
            webviewLink.getSettings().setJavaScriptEnabled(true);
            webviewLink.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            webviewLink.loadUrl(postlink);

            webviewLink.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    // TODO show you progress image
                    progressBar.setVisibility(View.VISIBLE);
                    super.onPageStarted(view, url, favicon);
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    // TODO hide your progress image
                    progressBar.setVisibility(View.GONE);
                    super.onPageFinished(view, url);
                }
            });

以这种方式加载 URL,它在同一个应用程序中对我有用..

【讨论】:

  • 我不想将用户发送到外部应用程序。上面的代码会将用户发送到 chrome 浏览器。正如我上面所说的点击buynow只有选择不同的视图才能获得可见性URL保持不变。
  • 我也在做同样的事情,但没有运气。 :-(
  • 我用上面的代码检查了 Flipkart 链接,由于模拟器配置问题,可能会出现无法加载 memtrack 模块错误。请用安卓设备试试。
  • 我在安卓设备上试用
【解决方案2】:

WebView webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings();

    webSettings.setJavaScriptEnabled(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);

    webView.setWebViewClient(new MyWebViewClient());
    webView.loadUrl(_URL);
}

private class MyWebViewClient extends WebViewClient{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        view.loadUrl(url);

        return true;
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(getApplicationContext(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
    }
}

【讨论】:

  • 有时 url 在模拟器中不起作用,但它可以在真实设备上运行。
  • 我不是在模拟器上测试,而是在真机上测试。我已经按照你的建议去做了。
  • 你能分享快照吗?你试过亚马逊、ebay 或其他购物网站的链接吗?
  • 我明白了,问题出在 XML 部分而不是 java 部分。需要将高度替换为 matchparent 而不是 wrapcontent。
猜你喜欢
  • 2014-07-19
  • 2012-12-27
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多