瀏覽器類型判斷。最可惡當屬於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瀏覽器。
附上代碼:
但是無法區分360安全瀏覽器和360極速瀏覽器。