IE11中navigator.userAgent的变化

时间:2021-03-24 16:57:29

    在原来判断浏览器是否是ie时,我们可以根据navigator.userAgent中时候有MSIE,但是IE11进行变革,userAgent中不在包含MSIE字段,

在实际项目中,入到类似的在控制台报错问题,就是在进行校验浏览器型号时,具体方法如下:

    function  getBrowserInfo(){

      var Sys = {};

      var ua = navigator.userAgent.toLowersCase();

      var re = /(msie I firefox | chrome | opera | version).*?([\d.]+)/;

      var m = ua.match(re);

      Sys.browser = m[1].replace(/version/,"'safari'");

      Sys.ver = m[2];

      return;

    }

    根据此方法,就可以获取到Sys里面有具体的浏览器信息了,可以直接调用此方法进行比较即可;

    但是生产环境突然无法登陆,用户反馈是利用IE11进行操作的,所以直接用IE11进行测试,具体报错如下:

    【        SCRIPT5007: 无法获取未定义或null引用的属性“1”    】

     根据报错显示位置,定位在正则匹配后无法获取到m;

    经过解决,ie11浏览器navigator.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";

     所以更换正则判断:var re = /(msie I firefox | chrome | opera | version | rv:).*?([\d.]+)/;

    这样问题就解决了,ie11兼容性得到了很大改善,还有很多改善,未完待续。。。。。。。。。。。。。。。。。。。