記錄:"ActiveXObject" js判斷IE瀏覽器(包括IE11)

轉自:https://blog.csdn.net/whupanyinghua/article/details/38026027

做web開發的,因爲衆所周知的原因,經常需要區別IE及非IE瀏覽器。其實js判斷IE瀏覽器的方法網上一搜一大把。

這裏我要說的是一個用起來比較簡單好記且使用的方法,記錄如下。

之前,js判斷的方式都是利用瀏覽器的useragent字段。通過判斷useragent字段裏面是否包含有MSIE字段來判斷是否是IE系列瀏覽器,屢試不爽。

但是在IE11之後,微軟把自家的IE革命了,IE11裏面的useagent沒有MSIE字樣。IE 11的userAgent爲:"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Shuame; rv:11.0) like Gecko"。明顯之前根據MSIE的方式來判斷,對IE11是失效的。


其實除了userAgent字段外,我們可以使用ActiveXObject對象來進行判斷。

一個很簡單的判斷函數如下

[javascript] view plain copy
  1. function isIE()  
  2. {  
  3.     if(!!window.ActiveXObject || "ActiveXObject" in window)  
  4.         return true;  
  5.     else  
  6.         return false;  
  7. }  
一些說明如下:

1.IE早些版本時,IE10及以下,window.ActiveXObject 返回一個對象,!window.ActiveXObject則變爲false,!!window.ActiveXObject則爲true,因爲是或||符號後續無需再判斷,返回true。

2.IE11中,window.ActiveXObject返回undefine,!window.ActiveXObject則變成了true,!!window.ActiveXObject則變成了false,進入 "window.ActiveXObject" in window判斷,該判斷條件在IE11下返回true。

3.其他非IE瀏覽器,如chrome,firefox,window.ActiveXObject都是undefine,!!window.ActiveXObject都是返回的false,而 "window.ActiveXObject" in window也是返回false,因此上述判斷函數在非IE瀏覽器中返回的都是false。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章