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屬性主要是有以下幾個設置:

meta name="format-detection" content="telephone=no"
meta name="format-detection" content="email=no"
meta name="format-detection" content="adress=no" 
也可以連寫:meta name="format-detection" content="telephone=no,email=no,adress=no"
下面具體說下每個設置的作用:
一、telephone

你明明寫的一串數字沒加鏈接樣式,而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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章