1. 判断浏览器及版本等
重点是navigator.userAgent
的使用
1.1. IE
IE的主要问题是IE 11
在ie8/9/10下,navigator.userAgent
分别输出如下:
navigator.userAgent
//10 "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; zhumu 4.0.0)"
// 9 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; zhumu 4.0.0)"
//8 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; zhumu 4.0.0)"
但是在ie11下,其内核为edge。输出为:
//11 "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; zhumu 4.0.0; rv:11.0) like Gecko"
所以,单纯的使用navigator.userAgent
是无法判断ie11的。
/**
* 该方法无法判断出IE 11
*/
function isIE(){
if (window.navigator.userAgent.indexOf("MSIE")>=1)
return true;
else
return false;
}
/**
* 包括ie11,但仅凭该方法无法判断浏览器版本号
*/
function isIE() { //ie?
if (!!window.ActiveXObject || "ActiveXObject" in window)
return true;
else
return false;
}
/**
* 综合上述方法,如下判断ie则基本正确
*/
function browserIE() {
if (!!window.ActiveXObject || "ActiveXObject" in window){//是IE
var userAgent = navigator.userAgent,reIE = new RegExp("MSIE (\\d+\\.\\d+);");
if(reIE.test(userAgent)){
return parseFloat(RegExp["$1"]);
}else{
return 11;
}
}
}
1.2. 其它
navigator.userAgent
//chrome "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
注意chrome和Safari的区别。chrome中有Safari
字符串,但是Safari
中无Chrome
字符串
// 一下代码未经测试
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
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; //判断Chrome浏览器
2. IE特殊标签
lte:Less than or equal to
lt :Less than
gte:Greater than or equal to
gt :Greater than
<!--[if IE]> Only IE <![endif]-->
所有的IE可识别
<!--[if IE 5.0]> Only IE 5.0 <![endif]-->
只有IE5.0可以识别
<!--[if gt IE 5.0]> Only IE 5.0+ <![endif]-->
高于IE5.0都可以识别
<!--[if lt IE 6]> Only IE 6- <![endif]-->
低于IE6可识别
<!--[if gte IE 6]> Only IE 6/+ <![endif]-->
IE6以及IE6以上都可识别
<!--[if lte IE 7]> Only IE 7/- <![endif]-->
IE7及ie7以下版本可识别
<!--[if (gte IE 9)|!(IE)]><!--><html> <!--<![endif]-->
大于等于ie9或者非ie浏览器