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

news/2024/7/19 15:23:48 标签: JavaScript, js, 前端

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;



http://www.niftyadmin.cn/n/951132.html

相关文章

零缺陷编程读书笔记(四)自己设计并使用断言(2)

3 利用断言进行补救 说老实话 memcpy中的调试码编得非常蹩脚,且颇有点喧宾夺主的意味。 void memcpy(void* pvTo, void* pvFrom, size_t size) { void* pbTo (byte*)pvTo; void* pbFrom (byte*)pvFrom; assert(pvTo ! NULL && pvFrom ! NULL); while…

虚拟机上安装Ubuntu Server解决网络配置

NAT方式使用的VMNet8网卡,主要要知道Gateway、DNS两个重要的IP。 第一个地址(192.168.10.1):静态地址,分配给了宿主机的VMware Network Adapter VMnet8适配器使用。 第二个地址(192.168.10.2):静态地址,分配给了NAT设备使用。 (192.168.83.3到…

Windows安装MongoDB全过程

MongoDB轻巧易用,移动性高。 到官网http://www.mongodb.org/ 下载软件安装或者下载压缩文件夹解压到本地任何地方,即完成安装。 如要使用MongoDB,进入安装目录,bin寻找mongod.exe 用 cmd 运行即可。 如果嫌麻烦,可以在…

携手共创·聚力未来 | 影创科技集团MR产业应用中心揭牌仪式在渝圆满举行

携手共创,聚力未来。8月28日,影创科技集团MR产业应用中心揭牌仪式在山城重庆举行。渝中区人民政府副区长乔宏、影创科技集团董事长孙立共同揭牌,来自影创科技集团、重庆市渝中区的领导和产业嘉宾共同见证了这一极具历史性意义的时刻。同时&am…