判斷IE兼容到IE11web
IE瀏覽器與非IE瀏覽器的區別是IE瀏覽器支持ActiveXObject,可是非IE瀏覽器不支持ActiveXObject。在IE11瀏覽器還沒出現的時候咱們判斷IE和非IE常常是這麼寫的chrome
1 function isIe(){ 2 return window.ActiveXObject ? true : false; 3 }
可是在IE11中上面判斷的返回的是false,我本身在IE11測試了下以下代碼:瀏覽器
1 alert(window.ActiveXObject); 2 alert(typeof window.ActiveXObject);
這是爲何呢?明明ActiveXObject是存在的,怎麼就typeof的結果確實undefined。哪位知道結果的告訴我這是爲何呢?爲神馬?函數
微軟上的官網說出了IE11的ActiveXObject的不一樣。測試
1 alert("ActiveXObject" in window)//在ie11下返回的是true
下面就直接給出兼容IE11判斷IE與非IE瀏覽器的方法。google
1 function isIe(){ 2 return ("ActiveXObject" in window); 3 }
判斷IE6瀏覽器spa
從IE7開始IE是支持XMLHttpRequest對象的,惟獨IE6是不支持的。根據這個特性和前面判斷IE的函數isIe()咱們就知道怎麼判斷IE6了吧。判斷方法以下:firefox
1 function isIe6() { 2 // ie6是不支持window.XMLHttpRequest的 3 return isIe() && !window.XMLHttpRequest; 4 }
判斷IE7瀏覽器code
由於從IE8開始是支持文檔模式的,它支持document.documentMode。IE7是不支持的,可是IE7是支持XMLHttpRequest對象的。判斷方法以下:對象
1 function isIe7() { 2 //只有IE8+才支持document.documentMode 3 return isIe() && window.XMLHttpRequest && !document.documentMode; 4 }
判斷IE8瀏覽器
在從IE9開始,微軟慢慢的靠近標準,咱們把IE678稱爲非標準瀏覽器,IE9+與其餘如chrome,firefox瀏覽器稱爲標準瀏覽器。二者的區別其中有一個是alert(-[1,]);//在IE678中打印的是NaN,可是在標準瀏覽器打印的是-1
那麼咱們就能夠根據上面的區別來判斷是IE8瀏覽器。方法以下:
1 function isIe8(){ 2 // alert(!-[1,])//->IE678返回NaN 因此!NaN爲true 標準瀏覽器返回-1 因此!-1爲false 3 return isIe() &&!-[1,]&&document.documentMode; 4 }
判斷IE九、IE十、IE11瀏覽器
從IE8瀏覽器是支持JSON內置對象的,從IE10開始支持js的嚴格模式。IE9+下alert(!-[1,])返回的是false,IE9+是支持addEventListener的,可是IE11瀏覽器中是不支持原來IE中獨有的事件綁定attachEvent。根據這些區別咱們就能區分出IE九、IE十、IE11瀏覽器了。
判斷其餘瀏覽器
1 //檢測函數 2 var check = function(r) { 3 return r.test(navigator.userAgent.toLowerCase()); 4 }; 5 var statics = { 6 /** 7 * 是否爲webkit內核的瀏覽器 8 */ 9 isWebkit : function() { 10 return check(/webkit/); 11 }, 12 /** 13 * 是否爲火狐瀏覽器 14 */ 15 isFirefox : function() { 16 return check(/firefox/); 17 }, 18 /** 19 * 是否爲谷歌瀏覽器 20 */ 21 isChrome : function() { 22 return !statics.isOpera() && check(/chrome/); 23 }, 24 /** 25 * 是否爲Opera瀏覽器 26 */ 27 isOpera : function() { 28 return check(/opr/); 29 }, 30 /** 31 * 檢測是否爲Safari瀏覽器 32 */ 33 isSafari : function() { 34 // google chrome瀏覽器中也包含了safari 35 return !statics.isChrome() && !statics.isOpera() && check(/safari/) 36 } 37 };