搜罗各种方法来判断浏览器是否为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浏览器