document.getElementsByClassName('adpic')[0].style.display ='none'
上面一行代码就是去改变要隐藏的控件的display属性,将这个css属性改为none,就是不让这个控件显示,这时,我们要隐藏的数据就会自动消失了.
到处为止,我们的js代码就写好了.在这个html页面中执行行代码就可以隐藏广告.但是我们的最终目的是在UIWebView中执行这行代码就行了.
UIWebView的使用
创建UIWebView
设置代理
加载网络请求
//创建webview
self.webview= [[UIWebViewalloc] initWithFrame:self.view.frame];
[self.viewaddSubview:_webview];
//设置代理
self.webview.delegate=self;
//发送请求
[_webview loadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://m.haodou.com/topic-327282.html?id=327282"]]];
运行后情况如下图
我们现在加载的网易的图片是有图片的,现在我们只需要往这个webview 中运行我们上面测试出来的一条js代码就会屏蔽这个广告图.
但是怎么运行呢?
还记得我们给webview添加了代理了么?他有一个回调方法.
见代码!!!
#pragmamark-UIWebViewDelegate
-(void)webViewDidFinishLoad:(UIWebView *)webView{
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.getElementsByClassName('adpic')[0].style.display = 'none'"];
}
这行代码是在webview 中执行参数中的那一行代码,还记得这行代码有什么作用么?
这个回调函数会在webview 请求网页成功会执行这个方法,当执行这个方法时,我们就用webview去执行屏蔽广告的js代码.
效果如下图