瀏覽器類型判斷。最可惡當屬於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極速瀏覽器。