美文网首页程序员
用js判断浏览器类型及IE具体各版本,支持IE11及Edge浏览

用js判断浏览器类型及IE具体各版本,支持IE11及Edge浏览

作者: tobyDing | 来源:发表于2017-03-22 09:24 被阅读0次

    最近,在项目中遇到一个需要判断浏览器类型的问题,,忽然才发现关于IE11浏览器的一些新特性,导致很多原来的方法不能再用了。。于是特此整理和研究了一个适合IE6及以上版本的IE浏览器判别和其他浏览器类型判别的方法。。。。顺便说一下,一些网上给出的方法好多都不实用了。太坑了。

    一、判断当前浏览类型及IE浏览器版本
    唯一缺点就是 IE7与IE5不分,但是IE6以下的判别已经不重要了

     function BrowserType() 
     { 
       var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 
       var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 
       // var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器 
       var isIE=window.ActiveXObject || "ActiveXObject" in window
       // var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器 
       var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
       var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器 
       var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器 
       var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1&&!isEdge; //判断Chrome浏览器 
      
       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 
          
        if (isFF) { return "FF";} 
        if (isOpera) { return "Opera";} 
        if (isSafari) { return "Safari";} 
        if (isChrome) { return "Chrome";} 
        if (isEdge) { return "Edge";} 
      }//myBrowser() end 
    
      alert(BrowserType());
    

    二、关于IE各版本浏览器判别的方法整理

    // 下面是支持ie11的版本的,当然ie6-10也是支持的
        function isIE() { //ie?
            if (window.ActiveXObject || "ActiveXObject" in window){
                return true;
             }else{
                return false;
             }
        }
        
        alert(isIE())   
        IE11的userAgent里是没有MSIE标志的,,所以只可以判断IE10及10以下浏览器
        function isIE(){
            if (window.navigator.userAgent.indexOf("MSIE")>=1) 
            return true; 
            else
            return false; 
        }
    
        
        
    
        // //可以判断IE10及10以下浏览器,因为IE11不支持document.all了
         if(document.all){  
            alert("is   IE!");  
          }
          
        
        //判断是否是IE8及以下版本的浏览器
        //原理是利用了IE8及以下版本的浏览器与标准浏览器在处理数组的toString方法的差异做成的。
        //-[1,]是为了实现该方法
        //对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它
        var ie = !-[1,]; 
        if(ie){
            alert('IE8及以下版本的浏览器');
        }else{
            alert('不是IE8及以下版本的浏览器');
        }
    
    
        //判断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');
        }
    

    相关文章

      网友评论

        本文标题:用js判断浏览器类型及IE具体各版本,支持IE11及Edge浏览

        本文链接:https://www.haomeiwen.com/subject/qltwnttx.html