JS判断各浏览器类型及版本

来源:互联网 发布:c语言可视化游戏 编辑:程序博客网 时间:2024/05/16 19:42

昨天写了一个滑动块的效果,今天发现原来在火狐上不兼容,后来查资料,发现伪元素 :after, :before在火狐的高版本中才能显示,于是研究了下如何判断浏览器的类型及版本信息,鉴于IE11版本开始没有了MSIE字段,所以自己又作了部分更改。
并且在关键步骤中,详细得列出了对应的log,有助于理解代码。
昨天写得滑块在火狐中的问题可能需要深究下:after和:before,研究之后会再作说明,一点一点深入吧。
在IE中的效果,真心是丑得不行,好吧,既然用了html5,我就暂且不管IE了。

var browser = getBrowserInfo() ;//浏览器信息//alert(browser);//IE 11.0//IE11以下: MSIE 10.0、MSIE9.0等//chrome:chrome/41.0.2272.89 [返回的是个数组] //firefox: firefox/42.0 [返回的是个数组] var verinfo = (browser+"").replace(/[^0-9.]/ig,""); //浏览器版本//alert(verinfo);//11.0//IE浏览器: 11.0/10.0/9.0//chrome浏览器:41.0.2272.89//Firefox浏览器: 42.0 function getBrowserInfo() {      var agent = navigator.userAgent.toLowerCase() ;      //console.log(agent);      //agent chrome : mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/41.0.2272.89 safari/537.36      //agent firefox : mozilla/5.0 (windows nt 6.1; wow64; rv:42.0) gecko/20100101 firefox/42.0      //agent  IE11: mozilla/5.0 (windows nt 6.1; wow64; trident/7.0; slcc2; .net clr 2.0.50727; .net clr 3.5.30729;       //接上.net clr 3.0.30729; media center pc 6.0;infopath.2; .net4.0c; .net4.0e; rv:11.0) like gecko       (可以看出IE11中不包括MSIE字段)      //agent  IE10:   mozilla/5.0(compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)      var regStr_ie = /msie [\d.]+;/gi ;      var regStr_ff = /firefox\/[\d.]+/gi      var regStr_chrome = /chrome\/[\d.]+/gi ;      var regStr_saf = /safari\/[\d.]+/gi ;      //IE11以下      if(agent.indexOf("msie") > 0)      {          return agent.match(regStr_ie) ;      }      //IE11版本中不包括MSIE字段      if(agent.indexOf("trident") > 0&&agent.indexOf("rv") > 0){          return "IE " + agent.match(/rv:(\d+\.\d+)/) [1];      }      //firefox      if(agent.indexOf("firefox") > 0)      {          return agent.match(regStr_ff) ;      }      //Chrome      if(agent.indexOf("chrome") > 0)      {          return agent.match(regStr_chrome) ;      }      //Safari      if(agent.indexOf("safari") > 0 && agent.indexOf("chrome") < 0)      {          return agent.match(regStr_saf) ;      } }
0 0