Js判斷瀏覽器類型

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

如如下代碼java

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

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

<%@ 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來判斷,下面對瀏覽器作了一些比較。app

谷歌:      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瀏覽器。

附上代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
        <title>瀏覽器檢測</title>
    </head>

    <script>
        window.onload = function () {
            
            //application/vnd.chromium.remoting-viewer 可能爲360特有
            var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");
            
            if (isChrome() && is360) { 
                alert("檢測到是360瀏覽器");
            }
        }
        //檢測是不是谷歌內核(可排除360及谷歌之外的瀏覽器)
        function isChrome(){
            var ua = navigator.userAgent.toLowerCase();

            return ua.indexOf("chrome") > 1;
        }
        //測試mime
        function _mime(option, value) {
            var mimeTypes = navigator.mimeTypes;
            for (var mt in mimeTypes) {
                if (mimeTypes[mt][option] == value) {
                    return true;
                }
            }
            return false;
        }
    </script>

    <body>
    </body>

</html>

可是沒法區分360安全瀏覽器和360極速瀏覽器。

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

相關文章
相關標籤/搜索