淺談jQuery為哪般去掉了瀏覽器檢測
由于做HTML5相關(guān)的項目,許多前衛(wèi)時髦的前端技術(shù)就需要考慮一下IE是否支持。要是在以前,可以很方便地調(diào)用jQuery的jQuery.browser來實現(xiàn)。
If(jQuery.browser.msie) alert(“DIE IE!”)
但這一便利在jQuery 1.9之后就不復存在了。突然覺得像失去了一個最親密的戰(zhàn)友,一個我一搞開發(fā)就離不開的好基友,一個我離開了就 無法寫出跨瀏覽器的前端代碼的好工具。一下子我竟不知道該如何是好。
然后每次需要考慮IE的時候,我就會去google一下,如何用1.9版本的jQuery來檢測IE,但StackOverFlow上的多數(shù)回答都告訴我:jQuery1.9廢掉勒jQuery.browser,建議用jQuery.support,但是沒有人告訴我為什么。
也不知道那時我的是不是腦子被門夾了半天反應不過來為什么給廢掉了,反正我的目的很簡單,就是需要檢測當前用戶用的是不是IE,如果不是IE,那么我就需要彈出相關(guān)提示信息告訴用戶你正在使用IE,某些功能可能不被支持云云。。。
無奈,以至于我的編碼回到了那個沒有jQuery的石器時代,用最原始的最plain的JavaScript代碼來檢測IE,而關(guān)于這樣的方法,由于有無數(shù)前輩在與IE的博弈中積累了大量經(jīng)驗,現(xiàn)成的方法已經(jīng)寫過N多了,所以我也就隨便揀一個用著。而且每次用的都還不一樣,下次遇到要檢測IE的時候,又去Google一把,得到另一段代碼達到相同的效果。
但問題是覺得別扭,就為了檢測一個IE,就需要專門為此多出一大段丑陋而跟頁面功能邏輯毫不相關(guān)的代碼。這感覺像是安裝一個破解軟件而同時被捆綁一大批廣告插件一樣。
伴隨最近Windows8.1的發(fā)部隨便關(guān)心了一下隨之而來的IE11,官方居然說這貨會支持WegGL技術(shù)!IE11將會支持這個微軟一直唾棄的技術(shù)了。這其實還不太讓人奇怪。因為IE被前端人員看成奇葩早在IE6時就開始了,這么多年過去了,開發(fā)者還不是和它共存了下來嘛。
但是IE11支持WebGL跟本文的毛線關(guān)系呢?是沒多大關(guān)系,但我突然意識到之前HTML5項目中用Three.js寫的東西可以在IE上運行了,至少在IE11上!所以之前關(guān)于IE的檢測顯得很二很不合邏輯。我天靈蓋似乎一道金光冒出,走出了之前的一個誤區(qū):確實不需要檢測用戶使用的是不是IE瀏覽器。我們的目的是要讓代碼正常運行。如果當前瀏覽器支持我們代碼中的特性,那么就正常運行,如果不支持,那就罷工給出提示唄。
所以我似乎理解為什么jQuery在1.9中不支持jQuery.browser了,轉(zhuǎn)而給出了support這個API,而且當我再次搜索“檢測IE”相關(guān)的問題時,也有聲音建議用Modernizr.js(一個檢測瀏覽器對HTML5,CSS3支持情況的JavaScript庫)。
因為檢測IE本身就是不科學的。盡管一些HTML5特性IE現(xiàn)在不支持,但它在不斷的更新,所以不代表后來的版本中不支持。所以如果代碼中還存在很直白的專門針對IE的代碼就顯得相當不科學了。一如上面提到的WegGL瀏覽器中3D相關(guān)的程序,可以預期,分明能夠在IE11中運行,但代碼如果僅僅是檢測瀏覽器IE就罷工然后很驕傲地彈出個提示“請換用其他瀏覽器”,IE是不是很無辜。。。
另外還有個原因不要只是檢測瀏覽器是不是IE,那就是各瀏覽器間本身就有差異,有差異是正常的,即使是除了IE外的FireFox,Chrome,Opera, Safari之類的,在各個Web標準的支持和實現(xiàn)上也不是完全一致。這也就是為什么一個樣式在Chrome中調(diào)試正常了,到FF中顯得有點別扭。如果是JavaScript代碼中的差異,是否我們又該寫一段檢測FF的代碼?;蛘吣程彀l(fā)現(xiàn)在Opera中某個功能出來的結(jié)果有偏差,那又要寫一段檢測Opera的代碼,顯示這種思路是有問題的。
這也就是為什么Modernizr.js會有用武之地的原因。為了確保代碼預期正常實現(xiàn),我們需要先檢測當前瀏覽器是否支持該功能,如果支持,okay,代碼正常執(zhí)行,如果不支持,則執(zhí)行另一段代碼。
以上這篇淺談jQuery為哪般去掉了瀏覽器檢測就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery插件echarts實現(xiàn)的多柱子柱狀圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件echarts實現(xiàn)的多柱子柱狀圖效果,結(jié)合完整實例形式分析了echarts繪制多柱子柱狀圖效果的操作步驟與相關(guān)實現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03