1. 程式人生 > >JS判斷瀏覽器版本(已解決IE11版本為Mozilla問題)

JS判斷瀏覽器版本(已解決IE11版本為Mozilla問題)

相容IE11的判斷方式

var getExplorer = (function() {
    var explorer = window.navigator.userAgent,
    compare = function(s) { return (explorer.indexOf(s) >= 0); },
    ie11 = (function() { return ("ActiveXObject" in window) })();
    if (compare("MSIE") || ie11) { return 'ie'; }
    else if (compare("Firefox") && !ie11) { return 'Firefox'; }
    else if (compare("Chrome") && !ie11) { return 'Chrome'; }
    else if (compare("Opera") && !ie11) { return 'Opera'; }
    else if (compare("Safari") && !ie11) { return 'Safari'; }
})()

注意:getExplorer返回結果是一個字串,如判斷是否為IE瀏覽器
if (getExplorer == 'ie') {
 alert('當前瀏覽器版本:IE');  
}

參考文獻1:http://blog.csdn.net/whupanyinghua/article/details/38026027

js判斷的方式都是利用瀏覽器的useragent欄位。通過判斷useragent欄位裡面是否包含有MSIE欄位來判斷是否是IE系列瀏覽器,但是在IE11之後,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"。IE11之後根據MSIE的方式來判斷,對IE11是無效的。

其實除了userAgent欄位外,我們可以使用ActiveXObject物件來進行判斷。

一個很簡單的判斷函式如下
function isIE()
{
    if(!!window.ActiveXObject || "ActiveXObject" in window)
        return true;
    else
        return false;
}

參考文獻2:http://www.softwhy.com/forum.php?mod=viewthread&tid=15052

獲取IE瀏覽器的版本在以前非常的好操作,但是由於IE11瀏覽器的出現,導致很多以前常用的方法已經無能為力,下面就介紹一下如何判斷IE瀏覽器的版本,並且能夠相容IE11瀏覽器。

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script type="text/javascript">
var userAgent = navigator.userAgent,   
rMsie = /(msie\s|trident.*rv<img src="static/image/smiley/default/smile.gif" smilieid="1" alt="" border="0">([\w.]+)/,   
rFirefox = /(firefox)\/([\w.]+)/,   
rOpera = /(opera).+version\/([\w.]+)/,   
rChrome = /(chrome)\/([\w.]+)/,   
rSafari = /version\/([\w.]+).*(safari)/;  
var browser;  
var version;  
var ua = userAgent.toLowerCase();  
function uaMatch(ua){  
  var match = rMsie.exec(ua);  
  if(match != null){  
    return { browser : "IE", version : match[2] || "0" };  
  }  
  var match = rFirefox.exec(ua);  
  if (match != null) {  
    return { browser : match[1] || "", version : match[2] || "0" };  
  }  
  var match = rOpera.exec(ua);  
  if (match != null) {  
    return { browser : match[1] || "", version : match[2] || "0" };  
  }  
  var match = rChrome.exec(ua);  
  if (match != null) {  
    return { browser : match[1] || "", version : match[2] || "0" };  
  }  
  var match = rSafari.exec(ua);  
  if (match != null) {  
    return { browser : match[2] || "", version : match[1] || "0" };  
  }  
  if (match != null) {  
    return { browser : "", version : "0" };  
  }  
}  
var browserMatch = uaMatch(userAgent.toLowerCase());  
if (browserMatch.browser){  
  browser = browserMatch.browser;  
  version = browserMatch.version;  
}  
document.write(browser+version);          
</script>
</script>
</head>
<body>
 
</body>
</html>
上面的程式碼實現了判斷功能,下面介紹一下它的實現原理,希望能夠給需要的朋友帶來幫助。
先來看一段程式碼:

navigator.userAgent
IE11下的資訊截圖:

然後使用相應的正則表示式進行匹配。IE11和以前版本的瀏覽器還是有較大差別的,以前的版本,這個資訊中包含msie,IE11中沒有了,新增加trident,後面跟著瀏覽器的版本號碼,這一點要特別注意一下。