我正在使用WebView显示一个页面,其中html包含一个iframe,其中src =“xxxxx.php”。
此iframe作为带有基础链接的广告图片加载。如果我点击该图像(链接),它会尝试在原始iframe中加载新页面(在该小空间中没有显示太多内容)。我想要发生的是点击链接在新的浏览器窗口中打开引用页面,让我的应用程序保持原样。
如果我使用Android浏览器显示原始页面并单击此iframe,则会将链接加载为新页面。如何使用WebView获得相同的行为?使用带有shouldOverrideUrlLoading()的WebViewClient似乎不会被iframe链接调用。
答案 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内的链接点击次数。链接应该有其他参数。我发现了:
似乎没有目标参数的iframe链接无法通过WebViewClient完全跟踪