l需求一在手机端显示一个远程的一个网站,(http://v3.bootcss.com)适应手机屏幕
步骤一 在storyboard中拖入一个UIWebView,并设置约束
步骤二显示页面,其实就是加载请求:在控制器中的具体实现代码如下.
@property(weak,nonatomic)IBOutletUIWebView*webView;
- (void)viewDidLoad {
[superviewDidLoad];
//创建一个请求
NSURLRequest*request = [NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://v3.bootcss.com/"]];
[self.webViewloadRequest:request];//加载请求
}
l需求二在手机端去除一些不必要的广告
分析:我们只能通过JS将这些不需要的广告给删掉,这样我们就需要监听网页的加载完成,因次在OC代码中,我们需要监听webView的加载完成,那如何监听webView的加载完成呢?让控制器成为webView的代理,就可以监听webView的加载过程.也就是网页加载完毕,的代理方法:
self.webView.delegate=self;
/**
*网页加载完毕
*/
- (void)webViewDidFinishLoad:(UIWebView*)webView
{
NSString*js =@"document.getElementsByTagName('footer')[0].remove();";
//让页面调用OC中的脚本,它属于webView的一个方法,特别提醒:执行JS脚本代码仅仅只有这一种方法
[webView stringByEvaluatingJavaScriptFromString:js];
}
//关于stringByEvaluatingJavaScriptFromString的更多使用
1>JS在执行完一段代码之后会将最后一个变量值返回给我们,代码如下:
NSString*js =@"var dog = {name : 'teddy', age :
20}; dog.name; dog.age;";
NSString*result = [webView stringByEvaluatingJavaScriptFromString:js];
NSLog(@"%@",result);//结果:20字符串类型
2>当我们调完JS某个函数的时候,我们可以拿到这个函数的返回值,代码如下:
NSString*js =@"function login (username, pwd) {
return 10;} login();";
NSString*result = [webViewstringByEvaluatingJavaScriptFromString:js];
NSLog(@"%@",result);//结果:10函数的返回值
3>如何获取网页的所有源代码,实现代码如下:
NSString*js =@"document.getElementsByTagName('html')[0].outerHTML";
NSString*result = [webView stringByEvaluatingJavaScriptFromString:js];
NSLog(@"%@",result);//输出结果为网页所有的源代码
补充:document.body.innerHTML获取body内容的所有源代码
4>JS代码在OC中如何排版?
JS格式\排版第一种做法
NSMutableString*js = [NSMutableString string];
[js appendString:@"function login (username, pwd) {"];
[js appendString:@"return 10;"];
[js appendString:@"]"];
[js appendString:@"login();"];
JS格式\排版第二种做法
NSString*js =@"function login (username, pwd) {"
"return 10;"
"}"
"login();";