最近自己在开发广告sdk这个项目,在对接其他第三方平台广告时,遇到了一个问题,就是第三方平台广告返回给我们的数据广告是一个HTML文件,自己用纯代码写了一个布局,如下图:
我是通过webview的形式展现出来的,这是一个插屏广告,由于插屏广告不是全屏的,所以点击广告时,webview里面的超链接广告不能全屏,查看了一下第三方广告平台返回给我们的HTML文件元素是target=”_top”,顺便看了一下API, target=”_top”表示 在整个窗口中打开被链接文档,target=”_balnk”表示在新窗口中打开被链接文档,没办法,我们得通过JS将target=”_top”改为target=”_blank”。
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript: var allLinks = document.getElementsByTagName('a'); if (allLinks) {var i;for (i=0; i<allLinks.length; i++) {var link = allLinks[i];var target = link.getAttribute('target'); if (target && target == '_top') {link.setAttribute('target','_blank');link.href = 'newtab:'+link.href;}}}");
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("newtab:")){
//对新的URL进行截取,去掉前面的newtab:
String realUrl=url.substring(7,url.length());
Intent intent = new Intent(Intent.ACTION_VIEW);
intent .setData(Uri.parse(realUrl));
main.startActivity(it);
}else{
view.loadUrl(url);
}
return true;
}
});