用js判斷瀏覽器類型及IE具體各版本,支持IE11及Edge瀏覽器

最近,在項目中遇到一個需要判斷瀏覽器類型的問題,,忽然才發現關于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');
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容