UIWebView使用小记
对webview 加载的文本中所有的网址变成可点击操作处理(我的方法:过滤所有的网址,然后变成html中的超链接形式如:<a href="http://www.baidu.com">www.baidu.com</a>),一开始没发现有属性可以设置,尝试了自己过滤html内容,发现自己过滤html中的内容时,标签对中的网址、以及一些图片显示的网址、或者输入习惯(多了空格,多了些字符等)会造成比较困难正确的把网址过滤,以及在替换时候会出错。忙活了一阵子。。。。(┬_┬)白白忙活了,还是做下网址过滤正则表达式的记录吧:
1.http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
2.((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)
3.(((ftp|https?):\/\/)(www\.)?|www\.)([\da-z-_\.]+)([a-z\.]{2,7})([\/\w\.-_\?\&]*)*\/?
4.(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:‘\".,<>???“”‘’]))
妈蛋啊!!原来webview有属性可以实现过滤。。。。。对,没错,就是下面的属性。~~o(>_<)o ~~ 以后看属性得认真
dataDetectorTypes属性(需要检测的数据类型),可以使得webview文本中 电话,网址,地址等文本加上标识
如果上述属性已经设置了,还无法使用,可能是在html文本中加了屏蔽的属性
format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置:
你明明写的一串数字没加链接样式,而iPhone会自动把你这个文字加链接样式、并且点击这个数字还会自动拨号!想去掉这个拨号链接该如何操作呢?这时我们的meta又该大显神通了,代码如下:
telephone=no就禁止了把数字转化为拨号链接!
telephone=yes就开启了把数字转化为拨号链接,要开启转化功能,这个meta就不用写了,在默认是情况下就是开启!
二、email
告诉设备不识别邮箱,点击之后不自动发送
email=no禁止作为邮箱地址!
email=yes就开启了把文字默认为邮箱地址,这个meta就不用写了,在默认是情况下就是开启!
三、adress
adress=no禁止跳转至地图!
adress=yes就开启了点击地址直接跳转至地图的功能,在默认是情况下就是开启!
UIWebView在发送请求之前,都会调?用这个?方法,如果返回NO,代表停?止加载 请求,返回YES,代表允许加载请求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
可用于监听上面所说的事件
[[[request URL] scheme]]isEqualToString:@"mailto"]--判断邮件地址
[[[request URL] scheme]]isEqualToString:@"tel"]--判断电话号码
[[[request URL] scheme]]isEqualToString:@"http"]--判断网址地址
默认标识长按有系统的调用,如何屏蔽呢
方法一、
<span style="font-family:KaiTi_GB2312;font-size:12px;">- (void)webViewDidFinishLoad:(UIWebView*)theWebView { [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; } </span>
方法二、更安全的方式是,写html的时候加上以下代码,这样不管谁调用你的网页,长按链接都不会呼出弹窗框
<span style="font-family:KaiTi_GB2312;font-size:12px;"><script type="text/javascript"> window.onload=function(){ document.documentElement.style.webkitTouchCallout='none'; }; </script></span>
更多操作webview:http://blog.csdn.net/zhaoweixing1989/article/details/13021513
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。