检测 IE 浏览器版本
JavaScript Navigator 对象提供了丰富的用户浏览器信息,利用这些信息,我们可以实现常见的得到浏览器名称以及浏览器版本等功能。但 Navigator 对象提供的一些信息却不能直接使用(如 IE 浏览器版本信息总是 4.0 等),因此要达到目的,需要做适当的改进。
IE6 浏览器虽然一个经典的版本,但在今天已经越来越不符合各项技术的发展了。对 IE6 浏览器的兼容性也困扰着广大的开发人员尤其前端设计人员,造成了不必要的人力物力浪费,在此本站也呼吁还在使用 IE6 版本的同学,请升级到 IE8 及以上版本。
下面提供了一个简单的检测 IE 浏览器版本的例子:
<script language="JavaScript"> function getIEVersion(){ var ua = navigator.userAgent; // 检查特殊字串"MSIE" var b = ua.indexOf("MSIE "); if (b < 0) { return 0; } // 返回浏览器类型及版本号 return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); } var IEVer = getIEVersion(); if( IEVer == 0 ){ alert("您使用的是非 IE 浏览器。"); }else if(IEVer > 6){ alert("您的浏览器版本较新。") }else{ alert("您需要升级您的浏览器版本了!"); } </script>
说明:由于在实际中,基本只涉及到 IE6 或以下版本的兼容性,因此这个例子没有提供其他浏览器及版本的检测。
检测浏览器类型
虽然 Navigator 对象提供了 appName 属性以取得浏览器的名称,但很遗憾 Firefox、Chrome 等以 Netscape 代码为基础浏览器提供的浏览器名称都是 Netscape。因此使用 navigator.appName 并不能严格区分各个浏览器。
要严格区分各个浏览器,还是要像上面的例子一样,通过 navigator.userAgent 属性包含的具体信息来判断。
<script type="text/javascript"> var ua = navigator.userAgent.toLowerCase(); var info = { // IE 浏览器 ie: /msie/.test(ua) && !/opera/.test(ua), // Opera 浏览器 op: /opera/.test(ua), // Safari 浏览器 sa: /version.*safari/.test(ua), // Chrome 浏览器 ch: /chrome/.test(ua), // Firefox浏览器 ff: /gecko/.test(ua) && !/webkit/.test(ua) }; // 判断并输出结果 (info.ie) && alert("IE 浏览器"); (info.op) && alert("Opera 浏览器"); (info.sa) && alert("Safari 浏览器"); (info.ff) && alert("Firefox 浏览器"); (info.ch) && alert("Chrome 浏览器"); </script>
本例通过构造对象属性,检测特定字符串来判断具体浏览器。如果需要同时判断浏览器版本,请参考前面 检测 IE 浏览器版本 的例子,对本例 判断结果输出部分 进行适当改进即可。