js 判斷瀏覽器類型


瀏覽器類型判斷。最可惡當屬於360瀏覽器,以前可以通過內核返回的字符串判定是否包含"360"字樣的方法來判定,

如以下代碼

     window.navigator.userAgent.indexOf('360')!=-1

但360瀏覽器某次更新后,內核顯示的字符串已經和IE瀏覽器是一樣的了,導致無法判斷是IE還是360。后來看了下window.navigator的成員集合,發現了一些區別,下面給出判斷代碼。

復制代碼
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  
<html>  
  <head>  
    <base >  
      
    <title></title>  
    
    <script>  
        function bro(){  
            var is360 = false;  
            var isIE = false;  
            if (window.navigator.appName.indexOf("Microsoft") != -1){  
                isIE= true;  
            }  
            if(isIE&&(window.navigator.userProfile+'')=='null'){  
                is360 = true;  
            }  
            if(is360){  
                document.body.innerText = '360瀏覽器';  
            }else if(isIE){  
                document.body.innerText = 'IE瀏覽器';  
            }  
        }  
    </script>  
  </head>  
    
  <body onload="bro();">  
     
  </body>  
</html>  
復制代碼

注意:加紅字體一定不要忘記,要不然會不成功。

后來發現上面的代碼不能用了,原因在於現在360瀏覽器6.3版本,是跟Chrome瀏覽器內核一樣了,不是和之前的IE內核,給了以下代碼。

復制代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">     
    
<html>    
  <head>    
    <base >    
        
    <title></title>    
      
    <script>    
        function bro(){    
            var is360 = false;    
            var isIE = false;    
            var isFirefox = false;  
            var isCrome = false;  
            var broName = '';  
            if(window.navigator.userAgent.indexOf('MSIE')!=-1&&window.navigator.appName.indexOf("Microsoft") != -1){  
                isIE = true;  
                broName = 'IE';  
            }  
            if(window.navigator.userAgent.indexOf('Firefox')!=-1){  
                isFirefox = true;  
                broName = 'Firefox';  
            }  
            if(window.navigator.userAgent.indexOf('Chrome')!=-1){  
                if(window.navigator.webkitPersistentStorage){  
                    isCrome = true;  
                    broName = 'Chrome';  
                }else{  
                    is360 = true;  
                    broName = '360';  
                }  
            }  
  
            document.getElementById('broType').value=broName;  
  
        }    
    </script>    
  </head>    
      
  <body onload="bro();">    
     <input type="text" id="broType" name="broType">  
  </body>    
</html> 
復制代碼

現在發現上面的又不能用了,因為現在360的版本又變了,內核的方式采取了IE和谷歌,網上大多數都是采用navigator.userAgent來判斷,下面對瀏覽器做了一些比較。

谷歌:      Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36

360極速:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36

360安全:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

但是,在有360網站下輸出navigator.userAgent,能判斷出360極速和360安全瀏覽器:

360極速:"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 QIHU 360EE"

 

360安全:"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 QIHU 360SE"

偶然間發現一個可以判斷是360瀏覽器的mimeType(媒體類型),type: "application/vnd.chromium.remoting-viewer"

在360極速瀏覽器>幫助>關於360瀏覽器,彈出如下:經過測試,只有在360瀏覽器中才會有輸出chromium這個標識,但是也不能100%確定檢測出的一定是360瀏覽器。

附上代碼:

按 Ctrl+C 復制代碼
按 Ctrl+C 復制代碼

但是無法區分360安全瀏覽器和360極速瀏覽器。

出處:http://www.cnblogs.com/chiangchou/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM