如何获取Webview iframe链接以启动浏览器?

Mar*_*cus 10 iframe android webview

我正在使用WebView显示一个页面,其中html包含一个iframe,其中src ="xxxxx.php".

此iframe作为带有基础链接的广告图片加载.如果我点击该图像(链接),它会尝试在原始iframe中加载新页面(在该小空间中没有显示太多内容).我想要发生的是点击链接在新的浏览器窗口中打开引用页面,保持我的应用程序不变.

如果我使用Android浏览器显示原始页面并单击此iframe,则会将链接加载为新页面.如何使用WebView获得相同的行为?使用带有shouldOverrideUrlLoading()的WebViewClient似乎不会被iframe链接调用.

小智 15

我在WebView源中遇到了与谷歌广告类似的问题,因为它们也加载了iframe.这是我解决它的方式:

在WebViewClient中尝试此操作,通常在您的shouldOverrideUrlLoading()下

            @Override
            public void onLoadResource (WebView view, String url) {
                if (url.contains("googleads")) {
                    if(view.getHitTestResult().getType() > 0){
                        view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                        view.stopLoading();
                        Log.i("RESLOAD", Uri.parse(url).toString());
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

  • 大家好,这实际上并没有检测到iframe点击,你有没有机会想出如何检测其他不是googleads的点击? (3认同)
  • 我对你的回答有点困惑。您提到了“shouldOverrideUrlLoading()”,但在代码中您使用了“onLoadResource()”。 (2认同)

Fed*_*ana 5

我可以对以前的代码提出一个修复:

@Override
    public void onLoadResource (WebView view, String url) {
        if (url.contains("googleads")) {
            if(view.getHitTestResult() != null && 
                    (view.getHitTestResult().getType() == HitTestResult.SRC_ANCHOR_TYPE ||
                    view.getHitTestResult().getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)){
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                view.stopLoading();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)