天天看点

【js】判断浏览器是否IE浏览器

搜罗各种方法来判断浏览器是否为ie浏览器

1.最简单的

局限:本判断方法经过判断在ie7  ie8  ie8兼容模式  

   在ie9  ie10   ie11 不起作用

解释:

  

<code>  alert([1,2]);</code><code>//相当于alert([1,2].tostring()); --这在ie与非ie上都相同,都会弹出"1,2"</code>

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

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

<code>  alert(nan==</code><code>true</code><code>);</code><code>//弹出 false</code>

<code>  alert(nan==</code><code>false</code><code>);</code><code>//弹出 false</code>

<code>  alert(nan==nan);</code><code>//弹出 false</code>

  可以发现,nan无论和谁比较返回都是false

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

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

<code>  alert(</code><code>new</code> <code>boolean(0));</code><code>//false</code>

<code>  alert(</code><code>new</code> <code>boolean(1));</code><code>//true</code>

<code>  alert(</code><code>new</code> <code>boolean(-1));</code><code>//true</code>

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

<code>  alert(!1);</code>

<code>  //即</code>

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

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

<code>  if</code> <code>(!+[1,]){</code>

<code>      </code><code>alert(</code><code>"是ie浏览器!"</code><code>)</code>

<code>  }</code>

<code>  else</code><code>{</code>

<code>      </code><code>alert(</code><code>"不是ie!"</code><code>)</code>

2.可以测试所有ie浏览器