之前懶得寫(xiě)判斷ie版本js,因?yàn)榫W(wǎng)上關(guān)于這方面的代碼太多了,所以從網(wǎng)上拷貝了一個(gè),放到項(xiàng)目上才發(fā)現(xiàn)由于時(shí)效性的問(wèn)題,代碼不生效。就自己寫(xiě)一個(gè)吧。
怎么去看瀏覽器的內(nèi)核等信息 ---- js的全局對(duì)象window子屬性navigator.userAgent,這個(gè)屬性是包含了瀏覽器信息的相關(guān)信息,包括我們需要的瀏覽器內(nèi)核
navigator.userAgent這個(gè)值取出來(lái)是個(gè)字符串,可以通過(guò)string的 indexOf方法或者正則匹配來(lái)驗(yàn)證關(guān)鍵字符串
ie11和edge的判斷方式有所不同,后面我會(huì)給出幾個(gè)圖
這個(gè)是ie11的userAgent
這個(gè)是edge的userAgent
ie9的userAgent
ie8的userAgent
ie10的userAgent
你一定發(fā)現(xiàn)了,ie11和edge的userAgent是和ie8,9,10差別蠻大的,那么對(duì)用的在寫(xiě)js時(shí)需要特別判斷,下面給出我寫(xiě)好的一段判斷是否是ie且給出ie版本號(hào)的js代碼段
function IEVersion() {var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
通過(guò)調(diào)用 IEVersion()可以獲得返回值,值如下
值 | 值類型 | 值說(shuō)明 |
-1 | Number | 不是ie瀏覽器 |
6 | Number | ie版本<=6 |
7 | Number | ie7 |
8 | Number | ie8 |
9 | Number | ie9 |
10 | Number | ie10 |
11 | Number | ie11 |
'edge' | String | ie的edge瀏覽器 |
js判斷瀏覽器,包括Edge瀏覽器
/*
* 描述:判斷瀏覽器信息
* 編寫(xiě):LittleQiang_w
* 日期:2016.1.5
* 版本:V1.1
*/
//判斷當(dā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 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瀏覽器
if (isIE)
{
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
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(fIEVersion == 11)
{ return "IE11";}
else
{ return "0"}//IE版本過(guò)低
}//isIE end
if (isFF) { return "FF";}
if (isOpera) { return "Opera";}
if (isSafari) { return "Safari";}
if (isChrome) { return "Chrome";}
if (isEdge) { return "Edge";}
}//myBrowser() end
//判斷是否是IE瀏覽器
function isIE()
{
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
if(isIE)
{
return "1";
}
else
{
return "-1";
}
}
//判斷是否是IE瀏覽器,包括Edge瀏覽器
function IEVersion()
{
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判斷是否IE的Edge瀏覽器
if(isIE)
{
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
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(fIEVersion == 11)
{ return "IE11";}
else
{ return "0"}//IE版本過(guò)低
}
else if(isEdge)
{
return "Edge";
}
else
{
return "-1";//非IE
}
}
識(shí)別各種瀏覽器的實(shí)現(xiàn)原理是根據(jù)navigator.userAgent返回值識(shí)別:
實(shí)現(xiàn):
unction validBrowser(){ var u_agent = navigator.userAgent; var browser_name='Failed to identify the browser'; if(u_agent.indexOf('Firefox')>-1){ browser_name='Firefox'; }else if(u_agent.indexOf('Chrome')>-1){ browser_name='Chrome'; }else if(u_agent.indexOf('Trident')>-1&&u_agent.indexOf('rv:11')>-1){ browser_name='IE11'; }else if(u_agent.indexOf('MSIE')>-1&&u_agent.indexOf('Trident')>-1){ browser_name='IE(8-10)'; }else if(u_agent.indexOf('MSIE')>-1){ browser_name='IE(6-7)'; }else if(u_agent.indexOf('Opera')>-1){ browser_name='Opera'; }else{ browser_name+=',info:'+u_agent; } document.write('browser_name:'+browser_name+'<br>'); document.write('u_agent:'+u_agent+'<br>'); }
附幾種瀏覽的user_agent..像360的兼容模式用的是IE、極速模式用的是chrom的內(nèi)核
比如判斷360兩種模式用下面代碼:
if (window.navigator.userAgent.indexOf('compatible') != -1) { alert('360兼容模式'); } if(window.navigator.userAgent.indexOf('AppleWebKit') != -1) { alert('360極速模式'); }
獲取瀏覽器信息需要使用navigator.userAgent 對(duì)象 根據(jù)獲取到的內(nèi)容判斷瀏覽器信息
親身測(cè)試
navigator.userAgent
IE 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; InfoPath.2; rv:11.0) like Gecko
IE11瀏覽器 已經(jīng)不能用msic 來(lái)判斷是否是IE11了 所以需要換另外一種方式
if (!!window.ActiveXObject || "ActiveXObject" in window) alert("IE") else alert("not IE") }
Chrome Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2950.5 Safari/537.36
Chrome瀏覽器中不知道 為什么會(huì)包含 Chrome和Safari 信息 ,我本人電腦上裝了這兩種瀏覽器
Safari Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
FireFox Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
Opera Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144
但是有些博客上面說(shuō)明是需要判斷 “Opera” ,而且不知道為什么會(huì)包含Chrome和Safari的信息在里面
QQ瀏覽器 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10551.400
QQ瀏覽器也包含Chrome和Safrari的信息在理里面。。
其他的瀏覽器我也沒(méi)有深入的嘗試過(guò)。
順序最好不要改
function myBrowser(){ var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串 if (userAgent.indexOf("OPR") > -1||userAgent.indexOf("Opera") > -1) { return "Opera" }//判斷是否Opera瀏覽器 else if (userAgent.indexOf("Firefox") > -1) { return "FF"; } //判斷是否Firefox瀏覽器 else if (userAgent.indexOf("Chrome") > -1){ return "Chrome"; } else if (userAgent.indexOf("Safari") > -1) { return "Safari"; } //判斷是否Safari瀏覽器 else{ //其他 } }
Navigator 對(duì)象包含有關(guān)瀏覽器的信息。js就是通過(guò)Navigator的屬性獲取客戶端瀏覽器信息
Navigator 對(duì)象屬性:
屬性
描述
appCodeName 返回瀏覽器的代碼名。
appMinorVersion 返回瀏覽器的次級(jí)版本。
appName 返回瀏覽器的名稱。
appVersion 返回瀏覽器的平臺(tái)和版本信息。
browserLanguage 返回當(dāng)前瀏覽器的語(yǔ)言。
cookieEnabled 返回指明瀏覽器中是否啟用 cookie 的布爾值。
cpuClass 返回瀏覽器系統(tǒng)的 CPU 等級(jí)。
onLine 返回指明系統(tǒng)是否處于脫機(jī)模式的布爾值。
platform 返回運(yùn)行瀏覽器的操作系統(tǒng)平臺(tái)。
systemLanguage 返回 OS 使用的默認(rèn)語(yǔ)言。
userAgent 返回由客戶機(jī)發(fā)送服務(wù)器的 user-agent 頭部的值。
userLanguage 返回 OS 的自然語(yǔ)言設(shè)置。
好像除了IE瀏覽器 其他瀏覽器有很多屬性 都是undefined
這個(gè)是IE 11 的
這個(gè)是Chrome的
而且除了IE 11之前的版本 其他的瀏覽器的名稱都是 Netscape
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇