前端开发那些事前端开发部落让前端飞

通过javascript判断五大浏览器及其版本

2018-04-15  本文已影响39人  b08d45cdf2ac
Opear

浏览器兼容是Web开发人员挥之不去的阴霾,特别是在以前的IE浏览器、怪异模式、CSS Hack、BFC,伤透脑筋,随着W3C标准的日益规范化,各大浏览器的差异在逐渐缩小,不过还是各有千秋,所以在开发中不免使用javascript来判断浏览器类型或者版本,我们主要通过浏览器navigator对象返回的userAgent字符串来进行判断。

一.单独判断是否IE浏览器:

//判断是否是IE浏览器  
function isIE() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  
    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器  
    if(isIE) {
        return "1";
    } else {
        return "-1";
    }
}

二.判断是否是IE浏览器及其版本,包括Edge浏览器 :

//判断是否是IE浏览器及其版本,包括Edge浏览器  
function IEVersion() {
    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("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版本过低  
    } else if(isEdge) {
        return "Edge";
    } else {
        return "-1"; //非IE  
    }
}

三.判断浏览器类型及其IE版本 :

//判断浏览器类型及其IE版本
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("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否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版本过低
    } //isIE end  
    if(isFF) {
        return "FF";
    }
    if(isOpera) {
        return "Opera";
    }
    if(isSafari) {
        return "Safari";
    }
    if(isChrome) {
        return "Chrome";
    }
    if(isEdge) {
        return "Edge";
    }
}

四.IE9以前判断IE浏览器经典方法 :

 var ie = !-[1,];   
 
alert(ie);

分析:在非标准浏览器(IE9-)里面,不会自动忽略数组最后一个逗号,而是在后面补齐undefined,所以在IE9以下不包括IE9中[1,]会被当做[1,undefined],此时在数组前面加-号返回NaN,取非!操作返回true。

上一篇下一篇

猜你喜欢

热点阅读