js判斷是否是IE瀏覽器的幾種方法


<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>

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM