最准确的浏览器判断(版本号,文档模式)

最近在做个对于程序员来说很痛苦的事情-多浏览器兼容,对应IE浏览器的确有点恼火,我的需求是IE8版本以上,文档模式也要是IE8以上的,不能存在浏览器模式为IE8,文档模式却是IE7的情况,所以我既要判断浏览器模式,也要判断文档模式,下面给出准确给出浏览器判断的代码:


var explorer = window.navigator.userAgent ;
   var isIE = navigator.userAgent.toLocaleLowerCase().indexOf('msie') !== -1;
//IE8及以上浏览器
//explorer.indexOf("MSIE")>0 IE11 无法用此方法判断出,IE11中已经去除了MSIE
if(!!window.ActiveXObject || "ActiveXObject" in window) {
var regStr_ie = /msie [\d.]+;/gi ;
var browser= explorer.match(regStr_ie) ;
var verinfo = (browser+"").replace(/[^0-9.]/ig,""); 
var verNo=parseInt(verinfo);
if(verNo<8){
window.location.href="${ctx}/views/client/browserInfoPage.jsp";
}else{
// 判断是否为IE5678
var isLteIE8 = isIE && !+[1,];
// 用于防止因通过IE8+的文档兼容性模式设置文档模式,导致版本判断失效
var dm = document.documentMode,isIE5, isIE6, isIE7, isIE8, isIE9, isIE10, isIE11;
if (dm){
isIE5 = dm === 5;
isIE6 = dm === 6;
isIE7 = dm === 7;
isIE8 = dm === 8;
isIE9 = dm === 9;
isIE10 = dm === 10;
isIE11 = dm === 11;
}
else{
   // 判断是否为IE5,IE5的文本模式为怪异模式(quirks),真实的IE5.5浏览器中没有document.compatMode属性
isIE5 = (isLteIE8 && (!document.compatMode || document.compatMode === 'BackCompat'));

// 判断是否为IE6,IE7开始有XMLHttpRequest对象
isIE6 = isLteIE8 && !isIE5 && !XMLHttpRequest;

// 判断是否为IE7,IE8开始有document.documentMode属性
isIE7 = isLteIE8 && !isIE6 && !document.documentMode;

// 判断是否IE8
isIE8 = isLteIE8 && document.documentMode;

// 判断IE9,IE10开始支持严格模式,严格模式中函数内部this为undefined
isIE9 = !isLteIE8 && (function(){
      "use strict";
   return !!this;
}());

// 判断IE10,IE11开始移除了attachEvent属性
isIE10 = isIE && !!document.attachEvent && (function(){
     "use strict";
   return !this;
}());
   
// 判断IE11
isIE11 = isIE && !document.attachEvent;
}
//如果使用IE5,IE6,IE7文档模式
if(isIE5 || isIE6 || isIE7){
window.location.href="${ctx}/views/client/browserInfoPage.jsp";
}
}
}else if(explorer.indexOf("Chrome") >= 0){
//chrome
}else{
//其他浏览器
window.location.href="${ctx}/views/client/browserInfoPage.jsp";
}
1.更新:新更改了对于IE11的判断,由于IE11中没有关键字MSIE
其中部分转载来自:http://www.cnblogs.com/fsjohnhuang/p/3818947.html,^_^肥仔John

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值