最短的經過特性檢測判斷瀏覽器

注意:咱們這裏通常是討論IE和非IE瀏覽器,更精準的檢測須要結合UA和其餘特性檢測來綜合判斷javascript

1. 垂直製表符html

'\v'的轉義問題,利用瀏覽器對轉義字符'\v'的理解java

IE瀏覽器不能識別\v爲一種轉義字符,會直接輸出vchrome

其餘瀏覽器(目前驗證safari\chrome)會轉義爲垂直製表符,大約等同於""一個空格express

// ie會生成爲v1,right-expression遇到+會轉化爲字符串拼接,但left-expression爲空,會轉爲數字加法, 能夠了解下+[]爲何等於0
// 因此ie +"v1"等到的結果就是NaN
var ie = !+"\v1"; //false, ie

2: 利用瀏覽器的JS引擎解析不一樣瀏覽器

咱們在寫一個類Json結構的object的js對象時,如ide

{
  name: "test",
  key: "key",
  value: false,
}

這段代碼在IE的引擎下會報錯爲: 不指望的結束符,緣由在於value結束後 ','號瀏覽器解析錯誤,因此這個方法是充分利用瀏覽器的糾錯功能來作的判斷ui

那麼[1,]在IE調用toString方法將會解析"1," 在標準瀏覽器中會剔除',',注意區分ArrayList中[,3,,4,]missing的是哪些索引,能夠看MDN的解釋spa

if (!+[1,]) {
  // ie  
} else {
  // 標準瀏覽器
}
// 操做符+當左表達式不存在時會試圖把右表達式轉化爲number
// +[]
// +[]的轉化過程能夠這樣來解釋
// Number([])
// Number([].toString())  // [].valueOf() isn’t primitive
// Number("")
// 0

擴展: +[]能夠查看code

相關文章
相關標籤/搜索