JS如何判断是否为ie浏览器的方法(包括IE10

JavaScript08

JS如何判断是否为ie浏览器的方法(包括IE10,第1张

判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userAgent里是没有MSIE标志的,原因就是这个了。

把判断IE浏览器的方法改成如下就可以了。

原来的函数写法:对于新版的ie11已经不支持了

function isIE(){

if (window.navigator.userAgent.indexOf("MSIE")>=1)

return true

else

return false

}

ie10及以上不支持ie浏览器的判断了,因为ie11已经不支持document.all了,下面是支持ie11的版本的,当然ie6-8也是支持的

function isIE() { //ie?

if (!!window.ActiveXObject || "ActiveXObject" in window)

return true

else

return false

}

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

var isIE = function(ver){

    var b = document.createElement('b')

    b.innerHTML = '<!--[if IE ' + ver + ']><i></i><![endif]-->'

    return b.getElementsByTagName('i').length === 1

}

alert('ie6:' + isIE(6) + '\n' + 'ie7:' + isIE(7) + '\n' + 'ie8:' + isIE(8) + '\n' + 'ie9:' + isIE(9) + '\n' + 'ie10:' + isIE(10))

很方便只需要 传入版本号码!