js判断IE浏览器,ie11的不同

在以前,判断ie的时候只需要判断useragent字段。通过判断useragent字段里面是否包含有MSIE字段来判断是否是IE系列浏览器。

但是在IE11之后,微软把自家的IE革命了,IE11里面的useagent没有MSIE字样。IE 11的userAgent为:"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; .NET4.0C; .NET4.0E; Shuame; rv:11.0) like Gecko"。明显之前根据MSIE的方式来判断,对IE11是失效的。

    //判断IE11
    if(navigator.userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)){
        alert('IE11')
    }else{
        alert('不是IE11')
    }


    //支持Edge
    var isEdge = navigator.userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
    if(isEdge){
        alert('Edge');
    }else{
        alert('不是Edge');
    }
    
    // 判断ie浏览器版本
    if (isIE)  
    { 
      var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); 
      reIE.test(userAgent); 
      var fIEVersion = parseFloat(RegExp["$1"]); 
      if(userAgent.indexOf('MSIE 6.0')!=-1){
        return "IE6";
      }else if(fIEVersion == 7) 
        { return "IE7";} 
      else if(fIEVersion == 8) 
        { return "IE8";} 
      else if(fIEVersion == 9) 
        { return "IE9";} 
      else if(fIEVersion == 10) 
        { return "IE10";} 
      else if(userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)){ 
            return "IE11";
        } 
      else
        { return "0"}//IE版本过低
    }//isIE end 

一些说明如下:
1.IE早些版本时,IE10及以下,window.ActiveXObject 返回一个对象,!window.ActiveXObject则变为false,!!window.ActiveXObject则为true,因为是或||符号后续无需再判断,返回true。

2.IE11中,window.ActiveXObject返回undefine,!window.ActiveXObject则变成了true,!!window.ActiveXObject则变成了false,进入 "window.ActiveXObject" in window判断,该判断条件在IE11下返回true。

3.其他非IE浏览器,如chrome,firefox,window.ActiveXObject都是undefine,!!window.ActiveXObject都是返回的false,而 "window.ActiveXObject" in window也是返回false,因此上述判断函数在非IE浏览器中返回的都是false。

你可能感兴趣的:(ie兼容)