[收藏]判断IE的版本
分类:Javascript| 发布:camnprbubuol| 查看:1813 | 发表时间:2013/7/12
在判断当前浏览器是否IE的方法很多,比如下边放到if条件里边都可以说明是ie浏览器,
!-[1,]
window.VBArray
window.ActiveXObject
window.attachEvent
等等,基本都是利用ie的奇葩(因为其它主流浏览器都很正统:-))
应用例子JS代码如下:
上边是判断ie和其它浏览器的鉴别,那么ie本身又分ie5,ie6,ie7,ie8,ie9,ie10,ie11... ie5我们可以忽略了,ie6也快应该被忽略了,期待!!!
ie9像是ie家族的一个分水岭,不过也不是很明显罢了,有几个需要注意一下:
Trident 标识是在 IE9 中引入的。 IE10 才不支持 条件注释
我们都知道,判断ie的版本可以通过user-agent,那么我们第一个方法就用这个吧,也算回顾一下。(重点是第二个方法,请期待一下下吧。(*^__^*) )
方法一: navigator.userAgent
你可以直接在你的浏览器的地址栏中输入:javascript:document.write(navigator.userAgent) 然后回车,看一下,自己的浏览器是一串什么代码。
Internet Explorer 11 的 user-agent:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Internet Explorer 10 的 user-agent (on Windows 7):
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
上述 user-agent 你还会注意到增加了 Gecko 的标识,而 Safari 是首个标注了 Gecko 的浏览器。
下边是ie9-ie5的user-agent:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; BOIE9;ZHCN)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; BOIE9;ZHCN)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; BOIE9;ZHCN)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; BOIE9;ZHCN)
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E; BOIE9;ZHCN)
方法二:号称是最短的判断ie版本的方法
JS代码如下:
20 | div = document.createElement( 'div' ), |
21 | all = div.getElementsByTagName( 'i' ); |
24 | div.innerHTML = '<!--[if gt IE' + (++v) + ']><i></i><![endif]-->' , |
27 | return v > 4 ? v : undef; |
注意一下这个 while 语句。是我觉得最有趣的。对于逗号操作符。我也不熟悉,还只是停留在像变量定义的用法上。比如:
1 | var a= 'b' , c = 'd' , e = 'f' ; |
其实这个比较少见。通常是返回最后一个值。
1 | var a = (1,2,3,5,6,0,9,4); |
当IE的浏览器模式(或者文档模式)改变的话,我怎么检测当前IE浏览器的版本?
以上两种方法,分别用了User Agent 探测和条件注释方法,那么接下来这种方法是:条件编译
如下图,本身浏览器是IE9,可是我改变了(例如使用:X-UA-Compatible改变)浏览器模式,那么userAgent也就随之变化。

此时,我们使用方法一: navigator.userAgent获取的就是IE8的信息,因此不能真正的判断出,当前的IE版本。
例如真正的检测浏览器版本是否IE10的方法:
然后使用下边的代码做判断,是否是IE10
真正检测IE浏览器版本(v5.5~v11)的方法:【收藏了】
01 | var IE = ( function () { |
04 | var ret, isTheBrowser, |
06 | jscriptMap, jscriptVersion; |
18 | jscriptVersion = new Function( "/*@cc_on return @_jscript_version; @*/" )(); |
20 | if (jscriptVersion !== undefined) { |
22 | actualVersion = jscriptMap[jscriptVersion]; |
26 | isTheBrowser: isTheBrowser, |
27 | actualVersion: actualVersion |
以上函数,使用方法是:用IE.isTheBrowser
来判断当前浏览器是否是IE浏览器,返回类型布尔值,true表示IE,false表示非IE。 用IE.actualVersion
来判断IE浏览器的版本号,返回类型字符串,错误的话,返回undefined
扩展阅读: