最近,在項(xiàng)目中遇到一個(gè)需要判斷瀏覽器類型的問題,,忽然才發(fā)現(xiàn)關(guān)于IE11瀏覽器的一些新特性,導(dǎo)致很多原來的方法不能再用了。。于是特此整理和研究了一個(gè)適合IE6及以上版本的IE瀏覽器判別和其他瀏覽器類型判別的方法。。。。順便說一下,一些網(wǎng)上給出的方法好多都不實(shí)用了。太坑了。
一、判斷當(dāng)前瀏覽類型及IE瀏覽器版本
唯一缺點(diǎn)就是 IE7與IE5不分,但是IE6以下的判別已經(jīng)不重要了
function BrowserType()
{
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判斷是否Opera瀏覽器
// var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
var isIE=window.ActiveXObject || "ActiveXObject" in window
// var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判斷是否IE的Edge瀏覽器
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&&!isEdge; //判斷Chrome瀏覽器
if (isIE)
{
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(userAgent.indexOf('MSIE 6.0')!=-1){
return "IE6";
}else if(fIEVersion == 7)
{ return "IE7";}
else if(fIEVersion == 8)
{ return "IE8";}
else if(fIEVersion == 9)
{ return "IE9";}
else if(fIEVersion == 10)
{ return "IE10";}
else if(userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)){
return "IE11";
}
else
{ return "0"}//IE版本過低
}//isIE end
if (isFF) { return "FF";}
if (isOpera) { return "Opera";}
if (isSafari) { return "Safari";}
if (isChrome) { return "Chrome";}
if (isEdge) { return "Edge";}
}//myBrowser() end
alert(BrowserType());
二、關(guān)于IE各版本瀏覽器判別的方法整理
// 下面是支持ie11的版本的,當(dāng)然ie6-10也是支持的
function isIE() { //ie?
if (window.ActiveXObject || "ActiveXObject" in window){
return true;
}else{
return false;
}
}
alert(isIE())
IE11的userAgent里是沒有MSIE標(biāo)志的,,所以只可以判斷IE10及10以下瀏覽器
function isIE(){
if (window.navigator.userAgent.indexOf("MSIE")>=1)
return true;
else
return false;
}
// //可以判斷IE10及10以下瀏覽器,因?yàn)镮E11不支持document.all了
if(document.all){
alert("is IE!");
}
//判斷是否是IE8及以下版本的瀏覽器
//原理是利用了IE8及以下版本的瀏覽器與標(biāo)準(zhǔn)瀏覽器在處理數(shù)組的toString方法的差異做成的。
//-[1,]是為了實(shí)現(xiàn)該方法
//對(duì)于標(biāo)準(zhǔn)游覽器,如果數(shù)組里面最后一個(gè)字符為逗號(hào),JS引擎會(huì)自動(dòng)剔除它
var ie = !-[1,];
if(ie){
alert('IE8及以下版本的瀏覽器');
}else{
alert('不是IE8及以下版本的瀏覽器');
}
//判斷IE11
if(navigator.userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)){
alert('IE11')
}else{
alert('不是IE11')
}
//支持Edge
var isEdge = navigator.userAgent.indexOf("Edge") > -1; //判斷是否IE的Edge瀏覽器
if(isEdge){
alert('Edge');
}else{
alert('不是Edge');
}