您的位置:首页 > Web前端 > JavaScript

js判断ie版本以及怪异模式,纯JS,可封装组件。

2014-12-25 16:43 666 查看
js判断ie版本以及怪异模式,纯JS,可封装组件。

var Brower = function checkIE(){
// 判断是否为IE
var isIE = navigator.userAgent.toLocaleLowerCase().indexOf('msie') !== -1;

// 判断是否为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;
}

return {
//怪异模式
isQuirks: document.compatMode !== 'CSS1Compat',
isIE : isIE,
isIE5 : isIE5,
isIE6 : isIE6,
isIE7 : isIE7,
isIE8 : isIE8,
isIE9 : isIE9,
isIE10 : isIE10,
isIE11 : isIE11
}
}();

/**
* Demo应用
* @如果是ie9以下版本或者怪异模式,一律return false。
*/
if(Brower.isIE5 || Brower.isIE6 || Brower.isIE7 || Brower.isIE8 || Brower.isIE9 || (Brower.isIE && Brower.isQuirks))return false;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaScript js 前端