javascript簡單區分現代瀏覽器和ie6,7,8

衆多周知,對瀏覽器的檢測主要分爲3類:
1:能力檢測 調用方法之前判斷瀏覽器支持這個方法嗎。
2:怪癖檢測 根據不同瀏覽的特殊性爲判斷瀏覽器。
3:用戶代理檢測 即通過檢測用戶代理字符串,這個字符串可以通過navigator.userAgent獲取。
下面介紹的2個方法都是怪癖檢測的方法
第一種:

if(+"\v1"){
alert("現代瀏覽器(包含ie9)")
}else{
alert("ie6,7,8")
}


在javascript中+後跟字符串是最簡單的字符轉轉換成數組,所有瀏覽器中+”v1″返回的都是NaN,+”1″返回的是1,類型爲number。
至於以上代碼爲何能分辨ie6,7,9與現代瀏覽器就在於這個神奇的”\v”,對沒錯就是”\v”,不是”/a”,不是”/b”,也不是”/V”,就是”/v”。
具體原因我也不清楚,在ie6,7,8中”\v1″解釋成”v1″,所以+”\v1″返回false。
而現代瀏覽器中,”\v1″都是解釋成”1″,自然+”/v1″返回true。
最開始我認爲是”\”這個凡斜槓的願意,但v換成其餘字母,結果都沒有如”v”一樣的效果。
ie6,7,8中”\v”==”v”,現代瀏覽器”\v”!=”v”也可以這樣判斷。至於”\v”的原理就期待高手來講解。
第二種是

if(-[1,]){
alert("現代瀏覽器")
}else{
alert("ie6,7,8")
}


通過的ie6,7,8對這樣數組[1,]的解釋與現代瀏覽器不一樣,這是ie6,7,8的bug,不過ie9已經改善過來。[1,].length在現代瀏覽器返回1,在ie6,7,8中返回2。
關於這個判斷方法在最簡潔短小的 JavaScript 判定 IE 瀏覽器有詳細介紹。

 

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