一句话判断IE浏览器

这篇笔记主要介绍了js判断是否为ie的方法,有需要的朋友可以参考一下

第一种:

if(window.addEventListener){ alert("not ie"); }else if(window.attachEvent){ alert("is ie"); }else{ alert("这种情况发生在不支持DHTML的老版本浏览器(现在一般都支持)") }

第二种:

if(document.all){ alert("IE6"); }else{ alert("not ie"); }

第三种:

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

第四种:

技术牛人写的世界上判断是否IE浏览器之最短的js代码,

if(!+[1,])alert("这是ie浏览器");    else alert("这不是ie浏览器");

全世界最短IE判定if(!+[1,])的解释:

<script type="text/javascript">

  alert([1,2]);//相当于alert([1,2].toString()); --这在IE与非IE上都相同,都会弹出"1,2"

  alert([1,]);//相当于alert([1,].toString());--在非IE的标准浏览器上,js引擎会自动删除最后的",",所以在IE上会弹出"1,",而在非IE上会弹出"1"

  alert(+[1,]);// 根据上面的解释,这一句在IE上相当于alert(+"1,"),而在非IE上相当于alert(+"1"),正号的作用在于试图将字符串转换为数 字,"1,"当然不是数字,而"1"可以转换为数字1,所以最终的结果:IE上会转换失败弹出"NaN",而非IE浏览器上会弹出数字"1"

//上面的+号转换字符串为数字的测试

var s = +"5";

alert(s+1);

//ok,到这里为止,我们知道 +[1,] 最终在IE为上NaN,在非IE浏览器上则为数字1

//下面再来看看很有个性的NaN

alert(NaN==true);//弹出 false

alert(NaN==false);//弹出 false

alert(NaN==NaN);//弹出 false

//即NaN不管与谁比较都是false

alert(!NaN);//相当于alert(!(NaN==true)),根据上面的解释当然是弹出true

//所以,alert(!+[1,]) 最终在IE上会弹出"true",下面再来看看firefox等非IE浏览器上的表现

alert(new Boolean(0));//false

alert(new Boolean(1));//true

alert(new Boolean(-1));//true

//即:数字0会转换为false,其它任何数字都会转换为true,所以最终在非IE浏览器上最终等效于:

alert(!1);

//即

alert(!true)//最终会得到false

  //综上所述:下面的这个判断就能判定浏览器是不是IE

  if (!+[1,]){

alert("我是货真价实的IE浏览器!")

  }

  else{

alert("我不是IE!")

  }

</script>

第五种:

function isIE() {

if (!!window.ActiveXObject || "ActiveXObject" in window)

return true;

else

return false;

}

还有一些判断浏览器类型的方法:

function getweb(){

   if((!!window.ActiveXObject || "ActiveXObject" in window){

      return "IE";

   }

   ifnavigator.userAgent.indexOf("Firefox")!=-1){

      return "Firefox";

   }

   if(navigator.userAgent.indexOf("Chrome")!=-1){

      return "Chrome";

   }

   if(navigator.userAgent.indexOf("Safari")!=-1){

      return "Safari";

   }

}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Java类加载器(用户自定义类加载器实现)

java类加载器主要分为如下几种: jvm提供的类加载器 根类加载器:底层实现,主要加载java核心类库(如:java.lang.*) 扩展类加载器:使用jav...

3586
来自专栏三流程序员的挣扎

Flutter 学习记3 - Widget 框架

通过 widgets 构建 UI,描述当前的配置和状态,当状态改变时,框架找出前后的变化,以确定底层 Render Tree 要做的最小更改,在内部变成另一个状...

1311
来自专栏小狼的世界

Javascript设计模式学习(一)封装和信息隐藏

在我们编程的过程中,我们应该尽可能的把数据和函数处理信息隐藏在对象内部,在Javascript中,我们怎样来做呢?

964
来自专栏前端小叙

js与ios桥接使用WebViewJavascriptBridge简单理解

https://github.com/marcuswestin/WebViewJavascriptBridge function setupWebViewJav...

3405
来自专栏Java帮帮-微信公众号-技术文章全总结

【选择题】Java基础测试题一(10道)

【选择题】Java基础测试题一(10道) 1.下面哪些是合法的变量名? (DEG) A.2variable //不能以数字开头 ...

4528
来自专栏Alice

demo3同通讯录展示的方式分组排序

按A-Z顺序分组展示 有些项目中会需要这样的需求。形成类似于上述的界面。类似于通讯录里边的排序。实现的效果:所有的数据展示的时候,能够分组展示。顺序按照A-Z的...

2249
来自专栏社区的朋友们

iOS 中的 Promise 设计模式

无论是代理模式,还是闭包,在处理单一任务的时候,都出色的完成了任务。可是当两种模式要相互配合,一起完成一系列任务,并且每个任务之间还要共享信息,相互衔接,雇主就...

2.2K1
来自专栏听雨堂

用Layer.search快速查询图元

    Mapx中查找图元,用Layer.search来完成;     Layer.search支持用比较表达式来进行查询;但是,往往会报告变量不存在。原因在于...

20910
来自专栏冰霜之地

高效的序列化/反序列化数据方式 Protobuf

上篇文章中其实已经讲过了 encode 的过程,这篇文章以 golang 为例,从代码实现的层面讲讲序列化和反序列化的过程。

5585
来自专栏一枝花算不算浪漫

[Java拾遗一] XML的书写规范与解析.

47720

扫码关注云+社区

领取腾讯云代金券