原文:js快速判断IE浏览器(兼容IE10与IE11)

在很多时候,我们一般采用navigator.userAgent和正则表达来判断IE浏览器版本,下面介绍用IE浏览器中不同特性来判断IE浏览器

 

1 判断IE浏览器与非IE 浏览器

IE浏览器与非IE浏览器的区别是IE浏览器支持ActiveXObject,但是非IE浏览器不支持ActiveXObject。在IE11浏览器还没出现的时候我们判断IE和非IE经常是这么写的

function isIe(){return window.ActiveXObject ? true : false;}

但是在IE11中上面判断的返回的是false,我自己在IE11测试了下如下代码

alert(window.ActiveXObject);
alert(typeof window.ActiveXObject);

结果是

这是为什么呢?明明ActiveXObject是存在的,怎么就typeof的结果确实undefined。哪位知道结果的告诉我这是为什么呢?为神马?

微软上的官网说出了IE11的ActiveXObject的不同。http://msdn.microsoft.com/en-us/library/ie/dn423948%28v=vs.85%29.aspx。但是并没有解释typeof的原因。如果我们用下面的代码来检测是可以的

alert("ActiveXObject" in window)//在ie11下返回的是false

这是我又不明白了"ActiveXObject" in window返回的是true,为什么以前判断IE浏览器的代码在IE11中返回的是false?再次求大牛们给个解释。谢谢
下面就直接给出兼容IE11判断IE与非IE浏览器的方法。

function isIe(){return ("ActiveXObject" in window);}

注意前提条件是我们的程序代码中不要覆盖ActiveXObject,应该没有哪个程序这么做吧。呵呵。

2 判断IE6浏览器

从IE7开始IE是支持XMLHttpRequest对象的,唯独IE6是不支持的。根据这个特性和前面判断IE的函数isIe()我们就知道怎么判断IE6了吧。判断方法如下

function isIe6() {// ie6是不支持window.XMLHttpRequest的return isIe() && !window.XMLHttpRequest;}

3 判断IE7浏览器

因为从IE8开始是支持文档模式的,它支持document.documentMode。IE7是不支持的,但是IE7是支持XMLHttpRequest对象的。判断方法如下

function isIe7() {//只有IE8+才支持document.documentModereturn isIe() && window.XMLHttpRequest && !document.documentMode;}

4 判断IE8浏览器

在从IE9开始,微软慢慢的靠近标准,我们把IE678称为非标准浏览器,IE9+与其他如chrome,firefox浏览器称为标准浏览器。两者的区别其中有一个是。大家测试下如下代码。返回的是什么

alert(-[1,]);//在IE678中打印的是NaN,但是在标准浏览器打印的是-1

那么我们就可以根据上面的区别来判断是IE8浏览器。方法如下

function isIe8(){// alert(!-[1,])//->IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为falsereturn isIe() &&!-[1,]&&document.documentMode;
}

5 判断IE9、IE10、IE11浏览器

从IE8浏览器是支持JSON内置对象的,从IE10开始支持js的严格模式,关于JS中的严格模式请参考这篇文章http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

IE9+下alert(!-[1,])返回的是false,IE9+是支持addEventListener的,但是IE11浏览器中是不支持原来IE中独有的事件绑定attachEvent。根据这些区别我们就能区分出IE9、IE10、IE11浏览器了。

6  判断其他浏览器

/****来自曾经项目中封装的公共类函数***/
//检测函数
var check = function(r) {return r.test(navigator.userAgent.toLowerCase());};
var statics = {/*** 是否为webkit内核的浏览器*/isWebkit : function() {return check(/webkit/);},/*** 是否为火狐浏览器*/isFirefox : function() {return check(/firefox/);},/*** 是否为谷歌浏览器*/isChrome : function() {return !statics.isOpera() && check(/chrome/);},/*** 是否为Opera浏览器*/isOpera : function() {return check(/opr/);},/*** 检测是否为Safari浏览器*/isSafari : function() {// google chrome浏览器中也包含了safarireturn !statics.isChrome() && !statics.isOpera() && check(/safari/);}
};

js快速判断IE浏览器(兼容IE10与IE11)相关推荐

  1. js如何判断IE浏览器的版本包括IE11

    js如何判断IE浏览器的版本包括IE11: 获取IE浏览器的版本在以前非常的好操作,但是由于IE11浏览器的出现,导致很多以前常用的方法已经无能为力,下面就介绍一下如何判断IE浏览器的版本,并且能够兼 ...

  2. js如何判断ie浏览器

    js如何判断ie浏览器 window.ActiveXObject || "ActiveXObject" in window css, 怎样使td高度固定,当内容超出设定高度时,超出 ...

  3. html5怎么兼容js 插件,Modernizr.js入门指南(HTML5CSS3浏览器兼容插件)

    HTML5 和 CSS3 的快速发展,给我们带来了极大的便利,比如从此再也不用花费大量的时间只是为了设计一个圆角的效果. 但是!我们不能像控制机器一样来控制所有的人都一夜之间升级到现代浏览器,因为那些 ...

  4. [Ext JS 4] 实战之浏览器兼容

    前言 按理说, Ext js 的开发应该没有浏览器兼容的问题,因为Ext js 本身就有考虑各浏览器兼容的状况. 本篇讨论的与其说是Ext js 开发的兼容性问题, 还不如说成是web 开发的兼容性问 ...

  5. python退出全屏_实现网页全屏和退出全屏JS代码,多浏览器兼容

    js全屏和退出全屏代码|www.125jz.com 全屏显示 退出全屏 function requestFullScreen(element) { // 判断各种浏览器,找到正确的方法 var req ...

  6. 使用Js快速判断链接是否为外链

    问题描述 在vue中实现一个跳转功能,点击跳转到某个链接,当这个链接是该项目以外的链接时(也称外链),会报错,使用的方式是 this.$router.push() 报错截图如下所示: 原因分析 在项目 ...

  7. 前端浏览器兼容问题总结

    浏览器占比现状 在各大浏览器厂商的发展过程中,他们其实对web的标准都有不同的实现,因为实现的标准的不同,所以会有兼容性的产生,早期IE是在浏览器的世界中,占据主导地位.所以它自身实现了很多不同于标准 ...

  8. 解决echarts在360浏览器兼容模式和ie浏览器不兼容问题

    问题一:js 脚本在360浏览器兼容模式会被阻止,需要手动允许程序才能运行. 问题二:js 脚本在ie浏览器会弹出               "echarts lnternet Explo ...

  9. JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)

    今天在写一个代码复制功能的时候,发现的这个问题,ie11也不支持document.all,看来以后越来越标准了 今天碰到一个奇怪的问题,有一个页面,想指定用IE浏览器打开,在VS开发环境没有问题,但部 ...

最新文章

  1. 我的.net程序为何不能执行?
  2. 1202: [HNOI2005]狡猾的商人
  3. python数据类型及使用方法_python 基本数据类型及方法
  4. finally块不被执行的情况总结
  5. SpringBoot编写sh脚本进行启停
  6. System.load 和 System.loadLibrary详解
  7. datalist 的用法。也是增删改查,但是比较智能。用数据绑定的方式,可以有不同的显示方法,下面是对一个表的增删改查的参考代码...
  8. 51nod1380 夹克老爷的逢三抽一
  9. 吐血整理了下AAAI2022中和NLP相关的论文,包括信息抽取、机翻、NER、多模态、数据增强、问答、多语言、KD、文本纠错等...
  10. 详解Python中re.sub
  11. html文档utf8文档字节,HTML UTF-8 参考手册
  12. android viewflipper 动画,Android ViewFlipper动画
  13. 关于一些初级ACM竞赛题目的分析和题解(八)
  14. ListView刷新时让Item不可点击
  15. selenium安装
  16. 叶俊——“新零售·新未来”米友圈第九届全国精英总裁班授课圆满落幕
  17. gns3使用简要教程(gns3-wireshark捕获教程)
  18. 用你的浏览器来静态分析网站源码——初级漏洞赏金猎人指南
  19. 【牛羊饲喂技术】牛羊育肥能不能喂猪料?蓉宝生物有说道
  20. 1-fastfds 环境搭建

热门文章

  1. 第02次作业-线性表
  2. CASE WHEN 高阶用法?
  3. [3]MVC3中使用Telerik(转)
  4. 目的港无人提货的法律风险及风险承担
  5. 数据产品必知的4层技术知识
  6. 产品经理成长三五事儿:搭建自己的成长模型
  7. 1995 年乔布斯访谈:什么对产品最重要
  8. 手摸手产品研究院 | 玲珑沙龙-一个可以“撕逼”的女性文化社区
  9. PMCAFF | 产品经理十宗罪(冷静反思篇)
  10. 活动 | Daung~!他们用产品思维改变医疗挂号问题