判断是否是IE,加载不同css样式

我最终选择第一第二种结合的方式判断全部类型

第一种方法,初始化方法中判断,然后获取头部添加样式连接。但是经过测试,IE9以上才好用

function ifIE(){ 
    if (window.ActiveXObject || "ActiveXObject" in window){ 
        var headHTML = document.getElementsByTagName('head')[0].innerHTML;
        headHTML    += ' ';
        document.getElementsByTagName('head')[0].innerHTML = headHTML;
      } 
}

或者

判断IE浏览器的具体版本
function IEVersion() {
      var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  
      var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器  
      var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器  
      var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
      if(isIE) {
          var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
          reIE.test(userAgent);
          var fIEVersion = parseFloat(RegExp["$1"]);
          if(fIEVersion == 7) {
              return 7;
          } else if(fIEVersion == 8) {
              return 8;
          } else if(fIEVersion == 9) {
              return 9;
          } else if(fIEVersion == 10) {
              return 10;
          } else {
              return 6;//IE版本<=7
          }   
      } else if(isEdge) {
          return 'edge';//edge
      } else if(isIE11) {
          return 11; //IE11  
      }else{
          return -1;//不是ie浏览器
      }
  }

第二种方式,头部增加判断

注意:以下用法不支持IE10和IE11

除IE外都可识别(不是IE)








第三种,IE hacks:

"_"  是IE6 专有的hack;
"\9" 对IE6-IE10都有效;
"\0"对IE8-IE10都有效;
"\9\0"对IE9-IE10都有效;

    优点:

           CSS hacks 内嵌在普通的 CSS 里面,不会产生更多 HTTP 请求。CSS hacks 内嵌在普通的 CSS 里面,编写时比较方便。

    缺点:

     它是不标准的产物。内嵌在其他 CSS 中,不便维护。尤其是当 hacks 的数量比较多的时候维护简直是个恶梦。内嵌在其他 CSS 中,即使在非 IE 浏览器中也会被加载,浪费资源。

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