WebView中的弹出对话框无法显示,但可以在chrome浏览器中正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebView中的弹出对话框无法显示,但可以在chrome浏览器中正常工作相关的知识,希望对你有一定的参考价值。

在Google Chrome中打开时

使用android WebView时

当我使用Google Chrome浏览器时,它会在当前显示视图上弹出

但是当我使用WebView时,它将转到中心网页,然后向下滚动以显示对话。

我现在应该做什么?

    webView.clearCache(true);
    webView.clearHistory();       
    webView.setWebViewClient(new MyBrowser());
    webView.getSettings().setjavascriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.setWebContentsDebuggingEnabled(true);
    webView.getSettings().setSupportMultipleWindows(true);
    webView.getSettings().setDisplayZoomControls(false);
    webView.setScrollbarFadingEnabled(false);
    webView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setInitialScale(100);
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.measure(100, 100);
    webView.loadDataWithBaseURL("", "<html><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8","");
    webView.addJavascriptInterface(this, "MyApp");
    webView.getSettings().setAllowFileAccess(true);

    webView.loadUrl(home_url);

WebChromeclient

    webView.setWebChromeClient(new WebChromeClient() 
        public void onProgressChanged(WebView view, int progress) 
            if(progress < 100 && progressBar.getVisibility() == ProgressBar.GONE)
                progressBar.setVisibility(ProgressBar.VISIBLE);

            
            progressBar.setProgress(progress);

            if(progress == 100) 
                progressBar.setVisibility(ProgressBar.GONE);
            
        

我尝试使用此弹出窗口的更正,但不起作用

        @Override
        public boolean onCreateWindow(WebView view, boolean isDialog,
                                      boolean isUserGesture, Message resultMsg) 


            WebView newWebView = new WebView(Main2Activity.this);
            newWebView.getSettings().setJavaScriptEnabled(true);
            newWebView.getSettings().setSupportZoom(true);
            newWebView.getSettings().setBuiltInZoomControls(true);
            newWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
            newWebView.getSettings().setSupportMultipleWindows(true);
            webView.setScrollbarFadingEnabled(false);
            view.addView(newWebView);
            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
            transport.setWebView(newWebView);
            resultMsg.sendToTarget();
            webView.setWebViewClient(new WebViewClient() 
                @Override
                public void onPageFinished(WebView view, String url) 
                    webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
                    super.onPageFinished(view, url);
                
            );

            newWebView.setWebViewClient(new WebViewClient() 
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) 
                    view.loadUrl(url);
                    return true;
                
            );

            return true;
        

    );

以上是关于WebView中的弹出对话框无法显示,但可以在chrome浏览器中正常工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS webview_flutter 可以正常显示页面但不表示弹出框?

求助.我的弹出层感觉被webview给挡住了

Java中对话框的弹出

切换到同一窗口中的弹出窗口

SDI-通过选定的弹出菜单项显示对话框

iframe中的弹出窗口如何显示在最外层?