js判断IE浏览器,ie11的不同

智码鎏金引
• 阅读 7109

在以前,判断ie的时候只需要判断useragent字段。通过判断useragent字段里面是否包含有MSIE字段来判断是否是IE系列浏览器。

但是在IE11之后,微软把自家的IE革命了,IE11里面的useagent没有MSIE字样。IE 11的userAgent为:"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Shuame; rv:11.0) like Gecko"。明显之前根据MSIE的方式来判断,对IE11是失效的。

    //判断IE11
    if(navigator.userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)){
        alert('IE11')
    }else{
        alert('不是IE11')
    }


    //支持Edge
    var isEdge = navigator.userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
    if(isEdge){
        alert('Edge');
    }else{
        alert('不是Edge');
    }
    
    // 判断ie浏览器版本
    if (isIE)  
    { 
      var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); 
      reIE.test(userAgent); 
      var fIEVersion = parseFloat(RegExp["$1"]); 
      if(userAgent.indexOf('MSIE 6.0')!=-1){
        return "IE6";
      }else if(fIEVersion == 7) 
        { return "IE7";} 
      else if(fIEVersion == 8) 
        { return "IE8";} 
      else if(fIEVersion == 9) 
        { return "IE9";} 
      else if(fIEVersion == 10) 
        { return "IE10";} 
      else if(userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)){ 
            return "IE11";
        } 
      else
        { return "0"}//IE版本过低
    }//isIE end 

一些说明如下:
1.IE早些版本时,IE10及以下,window.ActiveXObject 返回一个对象,!window.ActiveXObject则变为false,!!window.ActiveXObject则为true,因为是或||符号后续无需再判断,返回true。

2.IE11中,window.ActiveXObject返回undefine,!window.ActiveXObject则变成了true,!!window.ActiveXObject则变成了false,进入 "window.ActiveXObject" in window判断,该判断条件在IE11下返回true。

3.其他非IE浏览器,如chrome,firefox,window.ActiveXObject都是undefine,!!window.ActiveXObject都是返回的false,而 "window.ActiveXObject" in window也是返回false,因此上述判断函数在非IE浏览器中返回的都是false。

点赞
收藏
评论区
推荐文章
马丁路德 马丁路德
4年前
[译]尤雨溪:Vue3将不会支持IE11
之前尤雨溪曾说过,Vue3将会出一个IE11的兼容版本,现在Vue3.0都已经发布很久了,却迟迟不见兼容版本的出现,原来是因为微软积极的推进自家的新Edge浏览器,并打算放弃IE,这让尤雨溪同学觉得兼容IE是否还有必要,来看看他的知乎:译文从Vue3开始开发的时候一直到2018年底,我们一直被问到有关IE11的支持。
巴拉米 巴拉米
4年前
Vue 3 计划放弃支持 IE11
Vue.js作者尤雨溪就Vue3支持IE11的计划提交了新提案。提案摘要:1.Vue3将不会支持IE112.原定投入Vue3IE11支持的精力将投入给2.7,移植3.x兼容的新功能,包括:CompositionAPI\<scriptsetup\以及其它新的单文件组件特性
Stella981 Stella981
3年前
JavaScript获取浏览器类型与版本
  从网上找到一段使用JavaScript判断浏览器以及浏览器版本的比较好的代码,在此记录一下:1<scripttype"text/javascript"2varSys{};3varuanavigator.userAgent.toLowerCase();
Wesley13 Wesley13
3年前
Java修饰符判断
Java反射包里有一个类叫Modifier。里面有许多判断是否public,private等比如,判断修饰符是否是public    public static boolean isPublic(int mod) {        return (mod & PUBLIC) ! 0;    }这个intmod存在于Field,Me
Wesley13 Wesley13
3年前
IE 浏览器有多烂?第一个就给跪了···
!(https://oscimg.oschina.net/oscnet/9e0ec5aaa7ea440990dcd251be0a6fa8.jpg)怎么评价IE浏览器呢?很明显它每天都在影响着前端工程师的心情,相信很多前端工程师在调试浏览器兼容性时,都会在心里默默念叨:希望IE,特别是IE6下没问题。接下来我们来细数下关于IE浏览器的
Stella981 Stella981
3年前
IE9样式错乱,IE11无法正常加载v
1.第一步:安装babelployfill(已安装请跳过此步骤)yarnaddbabelployfill2.修改webpack打包配置文件:webpack.bash.conf.js//引入babelployfillvarbabelPloy
Stella981 Stella981
3年前
IE hack技术
HTML5学堂:我们平日说的IEhack到底是什么,随着浏览器的发展,IE的hack技术也在不断的发生着变化,一起看看最新的IEhack。何为hack?行业中存在着各类浏览器,典型的如IE、火狐、谷歌等;另外,即便同样种类的浏览器,也存在着不同的版本,如IE6、IE7……IE11等。不同浏览器对于CSS的解
Wesley13 Wesley13
3年前
JS判断是否为移动版浏览器
使用javascript(JS)判断浏览器是否为移动版浏览器。浏览器信息获取判断浏览器访问终端。//判断访问终端varbrowser{versions:function(){varunavigator.userAgent,appnaviga
Wesley13 Wesley13
3年前
IE下常见兼容性问题记录汇总(04
现在开发环境主要使用的ie9以上的浏览器,而实际上依然存在大量用户使用xp系统,而xp最高只能装到ie8,前段还不能放弃对ie8的兼容,现针对实际开发中所遇ie的兼容性问题和解决方案做个汇总(持续更新):IE8系列:1:JSON序列化与解析,现代浏览器都有原生JSON对象支持,而IE8没有,可以使用json2.js,配合针对ie的条件注释。2:t
Stella981 Stella981
3年前
Jquery判断ie浏览器,用$.support替换$.browser判断
如果你也是Jquery最初的使用者,那么你一定经历过这样判断浏览器的时代:$.browser.msie&&$.browser.version,你目前使用的组件里可能还有应用。但是Jquery1.3以后就不建议使用了,到jQuery1.9之后就不复存在了。应该是因为到ie8以上的版本判断就有问题了...⊙﹏⊙b汗只有另外想办法,使用$.support
网管小贾 网管小贾
1年前
我又做了一个Windows11下打开IE11的小工具,关键它不伤系统,自动更新也有效!
我又做了一个Windows11下打开IE11的小工具,关键它不伤系统,自动更新也有效!