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

时间:2011-04-12 21:06:10

标签: android iframe webview

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

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

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

3 个答案:

答案 0 :(得分: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());
                    }
                }
            }

答案 1 :(得分: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();
            }
        }
    }

答案 2 :(得分:0)

检测iframe内的链接点击次数。链接应该有其他参数。我发现了:

  1. 如果iframe链接具有目标参数target =“_ parent”或target =“_ top”,
  2. 将执行ifOverrideUrl对WebViewClient的处理 如果iframe链接包含target =“_ blank”参数,则
  3. onCreateWindow of WebViewClient
  4. 似乎没有目标参数的iframe链接无法通过WebViewClient完全跟踪