JavaScript判斷瀏覽器型別及版本

2021-08-30 14:24:06 字數 2282 閱讀 4319

申明,原帖子url:

各種瀏覽器的特徵及其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如下:

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

chrome

chrome有乙個messageevent函式,但firefox也有。不過,好在chrome並沒有firefox的getboxobjectfor函式,根據這個條件還是可以準確判斷出chrome瀏覽器的。目前,chrome的useragent是:

其中,版本號在chrome隻後的數字。

只要了解了以上資訊,我們就可以根基這些特徵來判斷瀏覽器型別及其版本了。我們會將判斷的結果儲存在sys名字空間中,成為前端框架的基本標誌資訊,供今後的程式來讀取。如果判斷出謀種瀏覽器,sys名字空間將有乙個該瀏覽器名稱的屬性,其值為該瀏覽器的版本號。例如,如果判斷出ie 7.0,則sys.ie的值為7.0;如果判斷出firefox 3.0,則sys.firefox的值為3.0。下面是判斷瀏覽器的**:使用不同特徵來判斷瀏覽器的方法,雖然在速度上比用正規表示式分析useragent要來的快,不過這些特徵可能會隨瀏覽器版本而變化。比如,一種瀏覽器本來獨有的特性取得了市場上的成功,其他瀏覽器也就可能跟著加入該特性,從而使該瀏覽器的獨有特徵消失,導致我們的判斷失敗。因此,相對比較保險的做法是通過解析useragent中的特徵來判斷瀏覽器型別。何況,反正判斷版本資訊也需要解析瀏覽器的useragent的。

通過分析各類瀏覽器的useragent資訊,不難得出分辨各類瀏覽器及其版本的正規表示式。而且,對瀏覽器型別的判斷和版本的判斷完全可以合為一體地進行。於是,我們可以寫出下面的**:其中,採用了「... ? ... : ...」這樣的判斷表示式來精簡**。判斷條件是一條賦值語句,既完成正規表示式的匹配及結果複製,又直接作為條件判斷。而隨後的版本資訊只需從前面的匹配結果中提取即可,這是非常高效的**。

以上的**都是為了打造前端框架所做的預研,並在五大瀏覽器上測試通過。今後,判斷某種瀏覽器只需用if(sys.ie)或if(sys.firefox)等形式,而判斷瀏覽器版本只需用if(sys.ie == '8.0')或if(sys.firefox == '3.0')等形式,表達起來還是非常優雅的。

JavaScript判斷瀏覽器版本

判斷ie11瀏覽器 function isie return activexodject in window 判斷ie6瀏覽器 function isie6 判斷ie7瀏覽器 function isie7 判斷ie8瀏覽器 function isie8 判斷ie9 ie10 ie11瀏覽器 從ie8...

判斷瀏覽器

if page.request.browser.ecmascriptversion.major 0 page.request.browser.w3cdomversion.major 0 判斷是否支援指令碼 response.write 瀏覽器名稱與版本號 page.request.browser.t...

判斷瀏覽器

不區分版本 function mybrowser 判斷是否opera瀏覽器 if useragent.indexof firefox 1 判斷是否firefox瀏覽器 if useragent.indexof chrome 1 if useragent.indexof safari 1 判斷是否sa...