原文:https://blog.csdn.net/whupanyinghua/article/details/38026027
原文:https://www.cnblogs.com/XCWebLTE/p/7017338.html
//js判斷IE瀏覽器的方法(包括ie11)
function isIE()
{
if(!!window.ActiveXObject || "ActiveXObject" in window)
return true;
else
return false;
}
解釋說明:(因為經常需要區別IE瀏覽器及非IE瀏覽器。記錄一下)
之前,js判斷的方式都是利用瀏覽器的useragent字段。通過判斷useragent字段里面是否包含有MSIE字段來判斷是否是IE系列瀏覽器,屢試不爽。
但是在IE11之后,微軟把自家的IE革命了,IE11里面的useagent沒有MSIE字樣。IE 11的userAgent為:"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; Media Center PC 6.0; .NET4.0C; .NET4.0E; Shuame; rv:11.0) like Gecko"。明顯之前根據MSIE的方式來判斷,對IE11是失效的。
其實除了userAgent字段外,我們可以使用ActiveXObject對象來進行判斷。
1.IE早些版本時,IE10及以下,window.ActiveXObject 返回一個對象,!window.ActiveXObject則變為false,!!window.ActiveXObject則為true,因為是或||符號后續無需再判斷,返回true。
2.IE11中,window.ActiveXObject返回undefine,!window.ActiveXObject則變成了true,!!window.ActiveXObject則變成了false,進入 "window.ActiveXObject" in window判斷,該判斷條件在IE11下返回true。
3.其他非IE瀏覽器,如chrome,firefox,window.ActiveXObject都是undefine,!!window.ActiveXObject都是返回的false,而 "window.ActiveXObject" in window也是返回false,因此上述判斷函數在非IE瀏覽器中返回的都是false。
//判斷是否是ie且給出ie版本號
function IEVersion() {
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判斷是否IE<11瀏覽器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判斷是否IE的Edge瀏覽器
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
if(isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(fIEVersion == 7) {
return 7;
} else if(fIEVersion == 8) {
return 8;
} else if(fIEVersion == 9) {
return 9;
} else if(fIEVersion == 10) {
return 10;
} else {
return 6;//IE版本<=7
}
} else if(isEdge) {
return 'edge';//edge
} else if(isIE11) {
return 11; //IE11
}else{
return -1;//不是ie瀏覽器
}
}
