在商城项目中,如果使用到了天猫、京东或者是淘宝的页面,在手机端会弹出一个App的广告,在上传AppStore时会被打回(哎……很无奈啊,毕竟是人家的东西),所以在加载这些HTML时,要设法删除掉或者隐藏掉这些东西。
删除这些,我所知道的有两种方式(本人才疏学浅啊):
- className或者id固定不变的,通过document.getElementsByClassName获得className或者通过document.getElementById获得需要删除的id的节点,执行remove或者hidden。例如:
//天猫
[self.webview stringByEvaluatingJavaScriptFromString: @"document.getElementsByClassName('smart-banner')[0].remove();"];
[self.webview stringByEvaluatingJavaScriptFromString: @"document.getElementById('detail-smart-banner').style.visibility='hidden';document.getElementById('detail-smart-banner').style.display='none';"];
[self.webview stringByEvaluatingJavaScriptFromString: @"document.getElementsByClassName('text-box mui-flex vertical')[0].remove();"];
//轮播图天猫
[self.webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('mui-bottom-smart-banner')[0].remove();"];
// 京东
[self.webview stringByEvaluatingJavaScriptFromString: @"document.getElementsByClassName('tryme')[0].remove();"];
//蜜芽网下载链接删除
[self.webview stringByEvaluatingJavaScriptFromString: @"document.getElementsByClassName('app_down appdtop_wrap')[0].remove();"];
- className或者id不固定的,不同通过单一内容获得需要删除或者隐藏的节点,所以可以找到其父节点,在父节点内部匹配到相对应的结构的内容,执行删除或者隐藏,例如:
//淘宝
[self.webview stringByEvaluatingJavaScriptFromString:@"var a = document.createElement('style');a.innerHTML = '[id][class][style=\"display: block;\"]{display:none!important;}body{padding-top:0!important;}';document.body.appendChild(a);"];
网友评论