在原来判断浏览器是否是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兼容性得到了很大改善,还有很多改善,未完待续。。。。。。。。。。。。。。。。。。。