分享两种检测 IE浏览器的代码 。 最近使用了 ES6的一些特性,然后因为要兼容IE浏览器,比如promise和fetch等,我引入了一个polyfill.js,然后我使用特性来检测IE浏览器的版本。但由于polyfill.js修复了IE的这些缺陷特性,使得我无法得到正确的IE版本。本文分享另外两种检测IE浏览器的代码。 解决方法 我找到了微软官网的一篇博客,里面提供了通过 IE的UA来判断浏览器的版本,虽然jQuery已经不推荐这种方法来检测,因为各个浏览器的厂商会自定义UA,加上IE有各种兼容模式,得到的版本不一定是正确的。但不妨碍我们使用它。代码如下: function getInternetExplorerVersion() { var rv = -1; // Return value assumes failure. if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat(RegExp.$1); } return rv; } function checkVersion() { var msg = "You're not using Windows Internet Explorer."; var ver = getInternetExplorerVersion(); if (ver > -1) { if (ver >= 8.0) msg = "You're using a recent copy of Windows Internet Explorer." else msg = "You should upgrade your copy of Windows Internet Explorer."; } alert(msg); } 由于我只需要检测 IE8及其以下的版本,所以我不需要去考虑IE11的UA跟上面不同的情况。所以我的代码是: var ie = navigator.userAgent.indexOf('MSIE') > -1; var ie8 = ie && getInternetExplorerVersion()<9; 一行代码 网上找到一行代码就能够判断 IE的版本,其实也是由上面这个函数改写为正则。代码如下:· var isIE = +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1); 然后就可以使用判断 if(isIE){} 或者 if(isIE===6){}。 但是,以上代码并不能识别 IE11 及以上版本,因为 IE11 修改了 userAgent 字符串,不再包含MSIE的标识。IE11 感觉自己高大上了,不能再和你们这群奇模怪样的 IE6-10 混了,加上了 like Gecko 标识,想要蒙混过关。 // IE 10 userAgent "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.3; WOW64; Trident/6.0)" // IE 11 userAgent "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko" // FireFox userAgent "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" // Chrome userAgent "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" IE11 为了使自己更像一款现代浏览器,支持现行标准,丢掉包袱(查看 IE11 中的兼容性更改),使用老的特性检测或者老的代理字符串检测方式已经不能区分出 IE11 了,成功跻身到高富帅行列。 但是, IE11 虽然是 IE 家族中的高富帅,其余屌丝也得照顾,所以document.documentMode是万万不能丢的。这个 IE 独有的属性为我们提供了简便可靠的识别。因为document.documentMode本身就是标识 IE 浏览器文档模式的,所以不属于功能特性。 最终判断 IE 的代码: //code from http://caibaojian.com/ua-detect-ie-version.html var isIE = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1) 条件检测 之前的 JavaScript判断IE浏览器版本IE6,IE7,IE8,里面也分享了条件检测IE版本的。但运行之后却发现不行,后来我调整了一下代码,发现IE返回的innerHTML为字符串,而不是数字。而原来的代码却是数字,所以导致没有检测到,网上的代码很多是错误写法,就是b.innerHTML ===1,然后innerHTML要等于 '1' 才行,调整后的代码为: var isIE = function(ver){ ver = ver || ''; var b = document.createElement('b') b.innerHTML = '<!--[if IE ' + ver + ']>1<![endif]-->' return b.innerHTML === '1' } if(isIE(6)){ // IE 6 } // ... if(isIE(9)){ // IE 9 } 在网上找到跟上面类似的一段代码,大家也可以看看: var _IE = (function(){ var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><![endif]-->', all[0] ); return v > 4 ? v : false ; }()); if(_IE && _IE<9){ alert('ie8'); } 提醒 上面的这个 _IE会在IE浏览器中返回IE的版本,大家可以根据返回的数字来做判断。
分享两种检测IE浏览器的代码
来源:这里教程网
时间:2026-03-03 12:13:38
作者:
编辑推荐:
- 分享两种检测IE浏览器的代码03-03
- word中怎么删除空白页的两种方法03-03
- word中删除回车的两种方法03-03
- windows 安装的oracle数据库版本 登录的时候出现报错,ORA-12560:TNS:协议配置器失败03-03
- word中如何添加水印?word水印怎么删除?03-03
- word中怎样替代文字的两种方法03-03
- word中设置脚注的方法步骤03-03
- word中怎样删除表格的两种方法03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- windows 安装的oracle数据库版本 登录的时候出现报错,ORA-12560:TNS:协议配置器失败
- oracle服务器负载过高_停止RMAN备份任务
oracle服务器负载过高_停止RMAN备份任务
26-03-03 - UTL_FILE.PUT写入txt时超过32k报ORA-29285: 文件写入错误
- WITH AS and materialize hints
WITH AS and materialize hints
26-03-03 - ORACLE analyse table方式收集表统计信息导致SQL执行计划不准确而性能下降
- HanLP用户自定义词典源码分析
HanLP用户自定义词典源码分析
26-03-03 - orecle分析函数
orecle分析函数
26-03-03 - Windows下用命令行工具ADRCI跟踪日志文件
Windows下用命令行工具ADRCI跟踪日志文件
26-03-03 - word空白页无法删除这么办
word空白页无法删除这么办
26-03-03 - 跨平台级联dataguard配置
跨平台级联dataguard配置
26-03-03
