android:在我的webview中打开弹出窗口 [英] android : Open pop-up window in my webview

查看:550
本文介绍了android:在我的webview中打开弹出窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序中有webview,当我单击webview内的链接时,我希望它打开弹出窗口.我添加了以下代码,但是没有用:-

I have webview in my application and I want it to open pop up windows when clicking on a link inside webview. I have added following code but it didn't work:-

WebSettings webSettings = webViewPage.getSettings();    
webSettings.setJavaScriptEnabled(true);    
webSettings.setSupportMultipleWindows(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

弹出窗口应该看起来像这样

the popup should appear like this

推荐答案

3年后,我正在回答自己的问题:

I am answering my own question after 3 long years:

在网页内触摸链接时,根据网页的实现方式,有两种可能的情况: 1)链接将在同一窗口中打开. 2)链接将在新窗口中打开.

When a link is touched inside a webpage then depending on a webpage implementation there are two possible scenarios: 1) Link will be opened in same window. 2) Link will be opened in new window.

使用以下代码可以轻松处理第一种情况:

Well Its easy to handle 1st scenario using below code:

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

在WebViewClient实现中覆盖shouldOverrideUrlLoading将在同一窗口中打开链接.

Overiding shouldOverrideUrlLoading inside WebViewClient implementation will open link in same window.

现在让我们来看第二种情况,即网页请求在新窗口中打开URL.对于这种情况,我们需要告诉我们的Web视图支持多个窗口,如下所示:

Now lets look at the 2nd case, where webpage is requesting a url to be open in new window. For this case we need to tell our webview to support multiple windows like below:

webView.getSettings().setSupportMultipleWindows(true);

,然后在网页请求新窗口时将新的Web chrome客户端添加到webview以获得事件

and then adding a new web chrome client to webview to get event when new window is requested by webpage

webView.setWebChromeClient(new WebChromeClient() {


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



                WebView newWebView = new WebView(WebpageActivity.this);
                newWebView.getSettings().setJavaScriptEnabled(true);
                newWebView.getSettings().setSupportZoom(true);
                newWebView.getSettings().setBuiltInZoomControls(true);
                newWebView.getSettings().setPluginState(PluginState.ON);
                newWebView.getSettings().setSupportMultipleWindows(true);
                view.addView(newWebView);
                WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
                transport.setWebView(newWebView);
                resultMsg.sendToTarget();

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

                return true;
            }
        }

    });

干杯!

这篇关于android:在我的webview中打开弹出窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆