JavaScript判斷瀏覽器類型及版本

      JavaScript判斷瀏覽器類型一般有兩種辦法,一種是根據各種瀏覽器獨有的屬性來分辨,另一種是通過分析瀏覽器的userAgent屬性來判斷的。在許多情況下,值判斷出瀏覽器類型之後,還需判斷瀏覽器版本才能處理兼容性問題,而判斷瀏覽器的版本一般只能通過分析瀏覽器的userAgent才能知道。

      我們先來分析一下各種瀏覽器的特徵及其userAgent。

 

   IE

  只有IE支持創建ActiveX控件,因此她有一個其他瀏覽器沒有的東西,就是ActiveXObject函數。只要判斷window對象存在ActiveXObject函數,就可以明確判斷出當前瀏覽器是IE。而IE各個版本典型的userAgent如下:

      Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
    Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)

其中,版本號是MSIE之後的數字。

 

   Firefox

   Firefox中的DOM元素都有一個getBoxObjectFor函數,用來獲取該DOM元素的位置和大小(IE對應的中是getBoundingClientRect函數)。這是Firefox獨有的,判斷它即可知道是當前瀏覽器是Firefox。Firefox幾個版本的userAgent大致如下:

       Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
    Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
    Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12

其中,版本號是Firefox之後的數字。

   Opera

   Opera提供了專門的瀏覽器標誌,就是window.opera屬性。Opera典型的userAgent如下:

       Opera/9.27 (Windows NT 5.2; U; zh-cn)
    Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
    Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0

其中,版本號是靠近Opera的數字。

   Safari

   Safari瀏覽器中有一個其他瀏覽器沒有的openDatabase函數,可做爲判斷Safari的標誌。Safari典型的userAgent如下:

  Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13

  Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3

  其版本號是Version之後的數字。

 

   Chrome

 

  Chrome有一個MessageEvent函數,但Firefox也有。不過,好在Chrome並沒有Firefox的getBoxObjectFor函數,根據這個條件還是可以準確判斷出Chrome瀏覽器的。目前,Chrome的userAgent是:

     Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

  其中,版本號在Chrome只後的數字。

 

   只要瞭解了以上信息,我們就可以根基這些特徵來判斷瀏覽器類型及其版本了。我們會將判斷的結果保存在Sys名字空間中,成爲前端框架的基本標誌信息,供今後的程序來讀取。如果判斷出謀種瀏覽器,Sys名字空間將有一個該瀏覽器名稱的屬性,其值爲該瀏覽器的版本號。例如,如果判斷出IE 7.0,則Sys.ie的值爲7.0;如果判斷出Firefox 3.0,則Sys.firefox的值爲3.0。下面是判斷瀏覽器的代碼:

 

 

 

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