2012-12-02 72 views
0

我提出爲用戶沿的只從userAgent提取瀏覽器名稱?

您的瀏覽器的線變的消息(用JavaScript實現的)太舊,查看我的網頁。您當前正在運行:

後跟用戶瀏覽器的名稱。

不幸的是,通常navigator.userAgent看起來是這樣的:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) 

的是,我需要吐回來的唯一一點是MSIE 8.0

在那裏有一個正則表達式,會或多或少地給我一個理智,傻瓜人友好的userAgent字符串的消毒?這適用於大量瀏覽器。

回答

0

從獲得的userAgent瀏覽器名稱和版本,你可以這樣做:

function identifyBrowser() { 
    var regexps = { 
      'Chrome': [ /Chrome\/(\S+)/ ], 
      'Firefox': [ /Firefox\/(\S+)/ ], 
      'MSIE': [ /MSIE (\S+);/ ], 
      'Opera': [ 
       /Opera\/.*?Version\/(\S+)/, 
       /Opera\/(\S+)/ 
      ], 
      'Safari': [ /Version\/(\S+).*?Safari\// ] 
     }, 
     re, m, browser, version; 

    userAgent = navigator.userAgent; 
    elements = 2; 
    for (browser in regexps) 
     while (re = regexps[browser].shift()) 
      if (m = userAgent.match(re)) { 
       version = (m[1].match(new RegExp('[^.]+(?:\.[^.]+){0,' + --elements + '}')))[0]; 
       return browser + ' ' + version); 
      } 
} 
+1

不是一個糟糕的起點......什麼古黑莓和諾基亞的人?關於Konqueror用戶,Lynx用戶和Netscape用戶呢? PS3瀏覽器用戶? Google TV用戶?我可以繼續... –

+0

公平地說,這可能要求太多。現在有這樣的東西(http://detectmobilebrowsers.com/)可以在那裏獲得一部分(匹配的比特可能是我想展示的某種理智的匹配)。 –