JS判斷瀏覽器版本(已解決IE11版本為Mozilla問題)
阿新 • • 發佈:2019-01-22
相容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,後面跟著瀏覽器的版本號碼,這一點要特別注意一下。