<script>
if(!+[1,])alert("这是ie浏览器");
else alert("这不是ie浏览器");
</script>
此方法是传说中的最简单的判断方法噢!
但是要注意的是:此判断方法在ie11下,不支持!
如:
<script type="text/javascript">
alert(+[1,]);
</script>
结果:输出1 → 是非ie
输出NaN →是ie (而ie11果然不支持这个NaN判断)
其实有很多判断的方法,大都是根据浏览器的特性来的。
比如库prototype的方法是:!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) 。就是根据ie支持window.attachEvent添加侦听事件,非ie用window.addEventListener添加侦听事件来判断的。navigator.userAgent.indexOf('Opera') === -1是因为opara浏览器能伪装成ie.如果!!(window.attachEvent )为真,就是ie;反之,如果!window.addEventListener为真,也可以判断为ie.
Ext使用的是!"1"[0],他利用IE无法使用数组下标访问字符串的特性来判断。在ie8下好像有问题。
在!+[1,]还未被发现前,判断ie最短的表达式是 !+"v1".它利用的是ie不支持垂直制表符的特性。
以前还有一个常用方法是document.all,由于opera浏览器能伪装成ie。可以这样写:!!(document.all && navigator.userAgent.indexOf('Opera') === -1).
还有很多,先记这几条,便于工作时查阅。
1.+[1,]
2.!+"v1"
3.!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1)
4.!!(!window.addEventListener&& navigator.userAgent.indexOf('Opera') === -1)
5.!!(document.all && navigator.userAgent.indexOf('Opera') === -1)
6.[if IE] [endif] 实例:<!--[if IE]><script scr="excanvas.js"> </script><![end if]-->
全世界最短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>