用jQuery實現(xiàn)檢測瀏覽器及版本的腳本代碼
更新時間:2008年01月22日 23:10:53 作者:
用jQuery實現(xiàn)檢測瀏覽器及版本的腳本代碼
如何用 Javascript 檢測瀏覽器似乎是老生常談的問題。根據(jù)本人的經(jīng)驗,使用 Javascript 檢測瀏覽器無非使用兩大類的方法。
其一,是使用使用瀏覽器的功能屬性。比如檢測瀏覽器是否支持 getElementById 方法就可以使用
if (document.getElementById) {
// the method exists, so use it here
} else {
// do something else
}
雖然這樣的檢測無法得知用戶具體使用哪一種瀏覽器,不過開發(fā)者根據(jù)瀏覽器的功能判斷是否兼容自己的代碼是經(jīng)得起考驗的。如果關(guān)注瀏覽器的實際功能而不在乎它的實際身份,就可以使用這種方法。
其二,就是使用傳統(tǒng)的 user-agent 字符串,這可能是最古老也是最流行的檢測方式。雖然從技術(shù)角度上說,用戶可以更改自己的 user-agent,但是使用它的確能獲得一些有用的信息。
話說到此可能有些偏題。使用過 jQuery 的朋友都知道,使用 jQuery 本身的 brower 方法就可以準確的判斷用戶在使用那種瀏覽器甚至是版本。好的開發(fā)庫使用者都想了解其中的一些其實現(xiàn)機制,那么,jQuery 是如何做到這些的?
查看 jQuery 最新的源代碼(版本 1.2.2),在第 1195 行至 1205 行,是它的判斷瀏覽器的函數(shù)。正如你所看見的,jQuery 使用的是上述第二種方法,即使用 user-agent 判斷用戶的瀏覽器和版本。
坦白說,起先我對短短的五行代碼就可以判斷瀏覽器的種類和版本感到非常的驚奇。在《Javascript 高級程序設(shè)計》一書中,作者甚至使用單獨的章節(jié)描述的如何使用 Javascript 判斷瀏覽器和操作系統(tǒng)。但通過閱讀其代碼(其實并不難),我頓時有中恍然大悟的感覺。廢話不多說,貼上代碼。
var userAgent = navigator.userAgent.toLowerCase();
// Figure out what browser is being used
jQuery.browser = {
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)
};
說到這里,其實有經(jīng)驗的 Javascript 開發(fā)人員已經(jīng)知道了其中的奧秘。是的,jQuery 使用的是正則判斷瀏覽器的種類和版本。做得相當?shù)钠粒?
首先它將 user-agent 統(tǒng)一成小寫,然后使用正則逐步的匹配是哪種瀏覽器。有關(guān)正則方面相關(guān)的信息,可以參考這里。不過,有人肯定會懷疑這樣的判斷是否正確。那么我們先來看下下面四個主流瀏覽器的 user-agent:
Safari(Windows edition)
... AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9
Opera(Opera 9.2 on Windows XP)
Opera/9.24 (Windows NT 5.1; U; zh-cn)
Mozilla(Firefox 2.0.11 on Windows XP)
... Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Internet Explorer (7.0 on Windows XP)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
jQuery 非常巧妙的使用各瀏覽器各自不同的 user-agent 特性作為判斷。比如 Safari 中 “/webkit/” 是專有的、“/opera/” 也是只有 Opera 瀏覽器特有等等。這種驗證方法可以在目前主流的瀏覽器上面,基本都可以準確判斷。
就在這里打住了,jQuery 的確是非常優(yōu)秀的 Javascript 開發(fā)框架之一。掌握它的確可以為自己的開發(fā)添加不少的樂趣。我會陸續(xù)將自己閱讀 jQuery 框架的心得逐一的發(fā)上來,請大家關(guān)注。
其一,是使用使用瀏覽器的功能屬性。比如檢測瀏覽器是否支持 getElementById 方法就可以使用
if (document.getElementById) {
// the method exists, so use it here
} else {
// do something else
}
雖然這樣的檢測無法得知用戶具體使用哪一種瀏覽器,不過開發(fā)者根據(jù)瀏覽器的功能判斷是否兼容自己的代碼是經(jīng)得起考驗的。如果關(guān)注瀏覽器的實際功能而不在乎它的實際身份,就可以使用這種方法。
其二,就是使用傳統(tǒng)的 user-agent 字符串,這可能是最古老也是最流行的檢測方式。雖然從技術(shù)角度上說,用戶可以更改自己的 user-agent,但是使用它的確能獲得一些有用的信息。
話說到此可能有些偏題。使用過 jQuery 的朋友都知道,使用 jQuery 本身的 brower 方法就可以準確的判斷用戶在使用那種瀏覽器甚至是版本。好的開發(fā)庫使用者都想了解其中的一些其實現(xiàn)機制,那么,jQuery 是如何做到這些的?
查看 jQuery 最新的源代碼(版本 1.2.2),在第 1195 行至 1205 行,是它的判斷瀏覽器的函數(shù)。正如你所看見的,jQuery 使用的是上述第二種方法,即使用 user-agent 判斷用戶的瀏覽器和版本。
坦白說,起先我對短短的五行代碼就可以判斷瀏覽器的種類和版本感到非常的驚奇。在《Javascript 高級程序設(shè)計》一書中,作者甚至使用單獨的章節(jié)描述的如何使用 Javascript 判斷瀏覽器和操作系統(tǒng)。但通過閱讀其代碼(其實并不難),我頓時有中恍然大悟的感覺。廢話不多說,貼上代碼。
var userAgent = navigator.userAgent.toLowerCase();
// Figure out what browser is being used
jQuery.browser = {
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)
};
說到這里,其實有經(jīng)驗的 Javascript 開發(fā)人員已經(jīng)知道了其中的奧秘。是的,jQuery 使用的是正則判斷瀏覽器的種類和版本。做得相當?shù)钠粒?
首先它將 user-agent 統(tǒng)一成小寫,然后使用正則逐步的匹配是哪種瀏覽器。有關(guān)正則方面相關(guān)的信息,可以參考這里。不過,有人肯定會懷疑這樣的判斷是否正確。那么我們先來看下下面四個主流瀏覽器的 user-agent:
Safari(Windows edition)
... AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9
Opera(Opera 9.2 on Windows XP)
Opera/9.24 (Windows NT 5.1; U; zh-cn)
Mozilla(Firefox 2.0.11 on Windows XP)
... Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Internet Explorer (7.0 on Windows XP)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
jQuery 非常巧妙的使用各瀏覽器各自不同的 user-agent 特性作為判斷。比如 Safari 中 “/webkit/” 是專有的、“/opera/” 也是只有 Opera 瀏覽器特有等等。這種驗證方法可以在目前主流的瀏覽器上面,基本都可以準確判斷。
就在這里打住了,jQuery 的確是非常優(yōu)秀的 Javascript 開發(fā)框架之一。掌握它的確可以為自己的開發(fā)添加不少的樂趣。我會陸續(xù)將自己閱讀 jQuery 框架的心得逐一的發(fā)上來,請大家關(guān)注。
相關(guān)文章
jQuery實現(xiàn)使用sort方法對json數(shù)據(jù)排序的方法
這篇文章主要介紹了jQuery實現(xiàn)使用sort方法對json數(shù)據(jù)排序的方法,涉及jQuery基于ajax針對json格式文件數(shù)據(jù)的動態(tài)載入與排序相關(guān)操作技巧,需要的朋友可以參考下2018-04-04jQuery實現(xiàn)的滑塊滑動導(dǎo)航效果示例
這篇文章主要介紹了jQuery實現(xiàn)的滑塊滑動導(dǎo)航效果,涉及jQuery事件響應(yīng)及頁面元素動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-06-06jQuery插件原來如此簡單 jQuery插件的機制及實戰(zhàn)
這種插件是將對象方法封裝起來,用于對通過選擇器獲取的jQuery對象進行操作,是最常見的一種插件2012-02-02jQuery插件jsonview展示json數(shù)據(jù)
這篇文章主要為大家詳細介紹了jQuery插件jsonview展示json數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05