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'  

此招一句话搞定,可判断FF123iesafariopera

-----

以下摘自:http://www.cnblogs.com/yjmyzz/archive/2010/05/13/1734695.html 

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

01<script type="text/javascript">
02alert([1,2]);//相当于alert([1,2].toString()); --这在IE与非IE上都相同,都会弹出"1,2"
03alert([1,]);//相当于alert([1,].toString());--在非IE的标准浏览器上,js引擎会自动删除最后的",",所以在IE上会弹出"1,",而在非IE上会弹出"1"
04alert(+[1,]);//根据上面的解释,这一句在IE上相当于alert(+"1,"),而在非IE上相当于alert(+"1"),正号的作用在于试图将字符串转换为数字,"1,"当然不是数字,而"1"可以转换为数字1,所以最终的结果:IE上会转换失败弹出"NaN",而非IE浏览器上会弹出数字"1"
05 
06//上面的+号转换字符串为数字的测试
07var s = +"5";
08alert(s+1);
09 
10//ok,到这里为止,我们知道 +[1,] 最终在IE为上NaN,在非IE浏览器上则为数字1
11 
12//下面再来看看很有个性的NaN
13alert(NaN==true);//弹出 false
14alert(NaN==false);//弹出 false
15alert(NaN==NaN);//弹出 false
16 
17//即NaN不管与谁比较都是false
18alert(!NaN);//相当于alert(!(NaN==true)),根据上面的解释当然是弹出true
19 
20 
21//所以,alert(!+[1,]) 最终在IE上会弹出"true",下面再来看看firefox等非IE浏览器上的表现
22alert(new Boolean(0));//false
23alert(new Boolean(1));//true
24alert(new Boolean(-1));//true
25//即:数字0会转换为false,其它任何数字都会转换为true,所以最终在非IE浏览器上最终等效于:
26alert(!1);
27//即
28alert(!true)//最终会得到false
29 
30//综上所述:下面的这个判断就能判定浏览器是不是IE
31if (!+[1,]){
32    alert("我是货真价实的IE浏览器!")
33}
34else{
35    alert("我不是IE!")
36}
37</script>

 

posted @ 2010-04-15 09:47  梅子  阅读(387)  评论(0编辑  收藏  举报