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代码.

效果如下图