js判断是否为IE浏览器的多种方法总汇

时间: 2018-06-08阅读: 3444标签: js知识

这篇文章主要整理通过js来判断浏览器是否为IE的多种方法。


方法一:

function isIE() { 
     if (!!window.ActiveXObject || "ActiveXObject" in window){ 
        return true;
     }else{ 
        return false; 
    }  
}

备注:window.ActiveXObject:判断浏览器是否支持ActiveX控件,只有IE浏览器里面支持ActiveX控件


方法二:

function isIE() { 
   var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 
   var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器 
   if(isIE){ 
      return true; 
   }else{ 
     return false; 
   } 
}

说明:通过获取userAgent中的信息来判断是否为IE


方法三:  

function isIE() { 
   	if(window.addEventListener){ 
		return false;
	}else if(window.attachEvent){ 
		return true;
	}else{
		return false;//这种情况发生在不支持Dhtml的老版本浏览器(现在一般都支持)
	}
}


方法四:

function isIE() { 
   	if(document.all){ 
		return true;
	}else{ 
		return false;
	}
}


方法五:  

function isIE() { 
   	var navigatorName = "Microsoft Internet Explorer"; 
	if(navigator.appName == navigatorName ){ 
		return true;
	}else{ 
		return false;
	}
}


方法六:    

function isIE() { 
	return !+[1,]?true:false;
}

在网上有幸看到夷人通过IE与非IE浏览器对垂直制表符支持特性搞出的一段简短的条件: 

var ie = !+"\v1";

以上出至32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE(需FQ) 而 更有牛人,据说是俄国大力士用6byte的长度将上面已经看似不能再短的判定条件记录刷新,如下:

var ie = !-[1,];

利用了IE与标准浏览器在处理数组的toString方法的差异做成的。对于标准游览器,如果数组里面最后一个字符为逗号,js 引擎会自动剔除它。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/868

原生js清除字符串所有空行的方法

在前端开发中,textarea的内容可能会存在空行的时候,但是我们在保存时并不希望有多余的空行,这就需要我们使用Js来清除字符串中的空行,只需要一个简单的正则表达式即可

js中减少使用不必要的if-else或switch_利用数组/对象代替if-else,switch

无论使用if-else,还是switch。当条件多的时候代码显得非常冗长,而且每次添加条件时需要修改主流程的代码,这样就破坏了类的开闭原则。为解决日后的维护可能存在问题,我们可以采用另一种比较优雅的实现方式来替换if-else,switch吗?

js中bool值转换以及逻辑运算&&、||、 !!的使用

js作为一门弱类型语言,导致几乎所有数据都能转换为bool的类型,js转换 规则 。了解转换规则目的掌握逻辑运算符&&、||、 !!的使用

原生js判断当前页面是否为激活状态【判断用户是否在浏览当前页面】

但浏览器打开多个网页时候,如何判断我这个页面是否正在被用户浏览呢?我们可以通过document.hidden属性判断当前页面是否是激活状态。

document.write和innerHTML的区别

document.write只能重绘整个页面,innerHTML可以重绘页面的一部分。 document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open。

为什么JavaScript开发如此疯狂

Web开发中其他一切对你而言都是小菜一碟,但当你深入探究JavaScript的时候,不免有一种“众人皆醒你独醉”的悲壮——好像其他人都知道你不知道的一些大的基础的知识内容,并且这些内容可以帮助你理解所有知识

js变量引用(指针)

基本类型:Number,Boolen,null,String,Underfined 存放在栈内存中,数据长度是固定的。引用类型:Object存在堆内存中,数据长度是变化的(同时有栈内存中有一个指针指向这个Object的)。

js中的相等性判断

Js提供了三种不同的比较操作符===,==,Object.is。ECMAScript 提供了四种比较操作符:非严格相等(==)、严格相等(===)、零值相等、同值相等。

前端与编译原理——用JS写一个JS解释器

说起编译原理,印象往往只停留在本科时那些枯燥的课程和晦涩的概念。作为前端开发者,编译原理似乎离我们很远,对它的理解很可能仅仅局限于“抽象语法树(AST)”。但这仅仅是个开头而已。编译原理的使用,甚至能让我们利用JS直接写一个能运行JS代码的解释器。

js的解析的两个阶段_预解析阶段、执行阶段

js不像C语言那样只要编译一次之后成.exe文件之后就不用在编译可以直接使用了,js是一种解释型语言,js同理是边解析边执行。js的解析分为两个阶段 1.预解析阶段 2.执行阶段。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!