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 相关文章推荐
JQuery 网站换肤功能实现代码
Nov 02 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
jquery ajax中使用jsonp的限制解决方法
Nov 22 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 Javascript
vue webpack build资源相对路径的问题及解决方法
Jun 04 Javascript
浅谈Web Storage API的使用
Jun 23 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
php 归并排序 数组交集
2011/05/10 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
domReady的实现案例
2016/11/23 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
NodeJS实现自定义流的方法
2018/08/01 NodeJs
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
使用Python神器对付12306变态验证码
2016/01/05 Python
Python实现图片拼接的代码
2018/07/02 Python
python通过zabbix api获取主机
2018/09/17 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
住宅使用说明书
2014/05/09 职场文书
责任心演讲稿
2014/05/14 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
免职证明样本
2014/10/23 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL