js判斷IE瀏覽器的方法(包括ie11)並獲取版本號


原文: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瀏覽器
            }
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM