在最近的项目中 经常要用到UIWebView,所以 小弟不才 特意学习总结了一下。
UIWebView代理方法
在webView的代理方法中,我就介绍一些个人认为比较有用的。
这个方法看名字就知道,就是WebView加载完成的时候调用。
这个时候,可以在这里面添加一些JS代码,来实现webView和JS的交互。
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
}
这个是每发送一次请求都会调用一次,也就是我们可以通过这个方法监听WebView上面的点击事件。
参数request 包括了请求的地址等信息。
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
}
UIWebView和JS的简单交互
在WebView中因为有stringByEvaluatingJavaScriptFromString
这个方法,使得WebView和JS交互变成有可能的事情,那么下面我们就来看看一些 基础的应用。
当然所有的JS应当在WebView 加载完成的前提之下进行,也就是 webViewDidFinishLoad
里面
从网页获取URL
-(NSURL *)url
{
NSString *urlString = [self.webView stringByEvaluatingJavaScriptFromString:@"location.href"];
if (urlString )
{
return [NSURL URLWithString:urlString];
}
else
{
return nil;
}
}
从网页获取标题
-(NSString *)title
{
return [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
网页的滚动位置
-(CGPoint)point
{
CGPoint pt;
pt.x = [[_webView stringByEvaluatingJavaScriptFromString:@"window,pageXOffset"] integerValue];
pt.y = [[_webView stringByEvaluatingJavaScriptFromString:@"window,pageYOffset"] integerValue];
return pt;
}
获取页面里面的icon
[web.request.URL scheme]
这个就像文档叙述的那样,代表签名的协议头,例如http://www.baidu.com
,那么这个就是 http://
[web.request.URL host]
这个就是后面的地址主机,就是 www.baidu.com
path 里面填写的是图片的名称。
NSURL *url = [[NSURL alloc] initWithScheme:[web.request.URL scheme] host:[web.request.URL host] path:@"/favicon.ico"];
调整webView里的字体大小
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '500%'"];
参考的致谢
http://www.cocoachina.com/industry/20121123/5167.html
还有许多高级用法,我暂时用不到所以先不看,感兴趣可以去上面的链接 学习。