关于JS的浏览器判断 msiei.test(navigator.userAgent)

JavaScript08

关于JS的浏览器判断 msiei.test(navigator.userAgent),第1张

正则表达式怎么可以这么用的——不要去问为什么,那是JS的语法用法,它规定可以这么用,那就这么用——就像不要去问为什么JS定义变量用var一样不是问题的问题。

/msie/i.test(navigator.userAgent)中的i指的是模糊匹配,不分大小写;这个正则表达式的作用是检查navigator.userAgent里面是否包含msie这个字符串(不分大小写),从而检查出是否为IE浏览器。

IE6~IE10的浏览器特征明显,存在msie字符串,而IE11去掉了msie字符串,可以通过rv后面的版本号识别IE11,具体方法如下:

function IETester(userAgent){

    var UA =  userAgent || navigator.userAgent

    if(/msie/i.test(UA)){

        return UA.match(/msie (\d+\.\d+)/i)[1]

    }else if(~UA.toLowerCase().indexOf('trident') && ~UA.indexOf('rv')){

        return UA.match(/rv:(\d+\.\d+)/)[1]

    }

    return false

}

IETester()//不传参数返回当前IE版本,如果不是IE内核浏览器,返回false

IETester('Mozilla/5.0 (Windows NT 6.3 WOW64 Trident/7.0 rv:11.0) like Gecko')//传userAgent字符串,用来判断其他IE浏览器的版本,该示例返回11.0