关闭

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

时间: 2018-06-08阅读: 2643标签: 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.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

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

关闭

44道JS难题

国外某网站给出了44道JS难题,这些题涉及面非常广,涵盖JS原型、函数细节、强制转换、闭包等知识,而且都是非常细节的东西,透过这些小细节可以折射出很多高级的JS知识点。

js可以设置网页默认为横屏状态吗?js设置网页横屏和竖屏切换

打开页面时通过 window.orientation 可以判断网页是横屏还是竖屏,如果是竖屏,给整个页面添加样式 transform: rotate(90deg); 这样,你的页面就显示横屏的效果了。 总的来说,结合window.orientationchange和window.orientation可以灵活的对网页进行变换。

JS 中的垃圾回收

对于开发者来说,JavaScript 的内存管理是自动的、无形的。我们创建的原始值、对象、函数……这一切都会占用内存。当某个东西我们不再需要时会发生什么?JavaScript 引擎如何发现它、清理它?

js中&与&&,|与||的区别

&、|、~都是位操作符,而&&、|、~|都是逻辑操作!。&&是逻辑与运算符假前真后,||是逻辑或运算符真前假后,&是按位与操作两个数值的个位分别相与,同时为1才得1,只要一个为0就为0。

原生js实现数组随机排列(数组乱序)的方法.【快速洗牌算法】

在开发中遇到这样的问题,需要将一组已知数组的顺序打乱,按照以前和现在的做法,总结了以下方法。

一眼看穿JS变量,作用域和内存问题

这篇文章将梳理下环境,作用域链,变量对象和活动对象,以及内存管理问题。基本类型和引用类型的值,我们都知道JS中的数据类型有两大类,基本数据类型和引用数据类型,下面从三个方面来解剖他们

JavaScript 优雅的实现方式包含你可能不知道的知识点【转】

Js优雅的实现方式包含你可能不知道的知识点:简短优雅地实现 sleep 函数,js获取时间戳,js数组去重,js数字格式化,js交换两个整数,将 argruments 对象(类数组)转换成数组,数字取整等

深入理解Javascript中apply、call、bind方法的总结。

apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;第一个参数都是this要指向的对象,也就是想指定的上下文;都可以利用后续参数传参;bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

Js中constructor指向问题

首先用一个例子指出来constructor存在形式。由上面的代码我们总结出结论1:上面的代码在控制台可以看出constructor是指向构造器Fruit的引用。这个地方就有点奇怪了。这个constructor到底指向的是那个实例的构造器?

你所忽略的js隐式转换

你有没有在面试中遇到特别奇葩的js隐形转换的面试题,第一反应是怎么会是这样呢?难以自信,js到底是怎么去计算得到结果,你是否有深入去了解其原理呢?下面将深入讲解其实现原理。

点击更多...

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