轉自: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對象來進行判斷。
一個很簡單的判斷函數如下
- function isIE()
- {
- if(!!window.ActiveXObject || "ActiveXObject" in window)
- return true;
- else
- return false;
- }
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。