2012-12-02 129 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/)可以在那里获得一部分(匹配的比特可能是我想展示的某种理智的匹配)。 –