JS判断浏览器(精短)
第一招,目前号称最短的判断浏览器是否为ie大法(IE8经鉴定同样适用):
JavaScript代码
1. //方法1
2. if(!+"\v1") //仅在IE下条件成立
同样,跟此法类似的有:
JavaScript代码
1. //方法2
2. if("\v"=="v")
3. //方法3
4. try{IE=window=!1}catch(e){IE=!0}
第二招,一句话判断所有浏览器:
JavaScript代码
1. B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown'
此招一句话搞定,可判断FF1,2,3,ie,safari,opera
-----
以下摘自:http://www.cnblogs.com/yjmyzz/archive/2010/05/13/1734695.html
全世界最短IE判定if(!+[1,])的解释
01 | <script type= "text/javascript" > |
02 | alert([1,2]); //相当于alert([1,2].toString()); --这在IE与非IE上都相同,都会弹出"1,2" |
03 | alert([1,]); //相当于alert([1,].toString());--在非IE的标准浏览器上,js引擎会自动删除最后的",",所以在IE上会弹出"1,",而在非IE上会弹出"1" |
04 | alert(+[1,]); //根据上面的解释,这一句在IE上相当于alert(+"1,"),而在非IE上相当于alert(+"1"),正号的作用在于试图将字符串转换为数字,"1,"当然不是数字,而"1"可以转换为数字1,所以最终的结果:IE上会转换失败弹出"NaN",而非IE浏览器上会弹出数字"1" |
05 |
06 | //上面的+号转换字符串为数字的测试 |
07 | var s = + "5" ; |
08 | alert(s+1); |
09 |
10 | //ok,到这里为止,我们知道 +[1,] 最终在IE为上NaN,在非IE浏览器上则为数字1 |
11 |
12 | //下面再来看看很有个性的NaN |
13 | alert(NaN== true ); //弹出 false |
14 | alert(NaN== false ); //弹出 false |
15 | alert(NaN==NaN); //弹出 false |
16 |
17 | //即NaN不管与谁比较都是false |
18 | alert(!NaN); //相当于alert(!(NaN==true)),根据上面的解释当然是弹出true |
19 |
20 |
21 | //所以,alert(!+[1,]) 最终在IE上会弹出"true",下面再来看看firefox等非IE浏览器上的表现 |
22 | alert( new Boolean(0)); //false |
23 | alert( new Boolean(1)); //true |
24 | alert( new Boolean(-1)); //true |
25 | //即:数字0会转换为false,其它任何数字都会转换为true,所以最终在非IE浏览器上最终等效于: |
26 | alert(!1); |
27 | //即 |
28 | alert(! true ) //最终会得到false |
29 |
30 | //综上所述:下面的这个判断就能判定浏览器是不是IE |
31 | if (!+[1,]){ |
32 | alert( "我是货真价实的IE浏览器!" ) |
33 | } |
34 | else { |
35 | alert( "我不是IE!" ) |
36 | } |
37 | </script> |