JavaScript判断IE版本型号


Posted in Javascript onJuly 27, 2015

下面通过代码给大家讲解下,具体请看下文:

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的不同。

 

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

下面就直接给出兼容IE11判断IE与非IE浏览器的方法。
 function isIe(){

    return ("ActiveXObject" in window);

 }

判断IE6浏览器

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

 function isIe6() {

    // ie6是不支持window.XMLHttpRequest的

    return isIe() && !window.XMLHttpRequest;

 }

判断IE7浏览器

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

 

function isIe7() {

     //只有IE8+才支持document.documentMode

     return isIe() && window.XMLHttpRequest && !document.documentMode;

 }

判断IE8浏览器

在从IE9开始,微软慢慢的靠近标准,我们把IE678称为非标准浏览器,IE9+与其他如chrome,firefox浏览器称为标准浏览器。两者的区别其中有一个是alert(-[1,]);//在IE678中打印的是NaN,但是在标准浏览器打印的是-1

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

 

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

判断IE9、IE10、IE11浏览器

从IE8浏览器是支持JSON内置对象的,从IE10开始支持js的严格模式。IE9+下alert(!-[1,])返回的是false,IE9+是支持addEventListener的,但是IE11浏览器中是不支持原来IE中独有的事件绑定attachEvent。根据这些区别我们就能区分出IE9、IE10、IE11浏览器了。

判断其他浏览器

//检测函数
 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浏览器中也包含了safari
     return !statics.isChrome() && !statics.isOpera() && check(/safari/)
   }
 };

以上就是本文的全部介绍,希望可以帮助到大家。

Javascript 相关文章推荐
javascript里的条件判断
Feb 27 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
jQuery中获取Radio元素值的方法
Jul 02 Javascript
JS中类或对象的定义说明
Mar 10 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
javascript倒计时效果实现
Nov 12 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
Jul 20 Javascript
Flask中获取小程序Request数据的两种方法
May 12 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
angularJs利用$scope处理升降序的方法
Oct 08 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
关于AOP在JS中的实现与应用详解
May 06 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 #Javascript
readonly和disabled属性的区别
Jul 26 #Javascript
javascript实现继承的简单实例
Jul 26 #Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 #Javascript
javascript实现将文件保存到本地方法汇总
Jul 26 #Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 #Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
Jul 26 #Javascript
You might like
PHP生成便于打印的网页
2006/10/09 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
React优化子组件render的使用
2019/05/12 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python logging重复记录日志问题的解决方法
2018/07/12 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
linux面试题参考答案(6)
2016/06/23 面试题
几个Shell Script面试题
2014/04/18 面试题
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
高校十八大报告感想
2014/01/27 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
依法行政工作汇报
2014/10/28 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
业余无线电通联Q语
2022/02/18 无线电
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL