本文介绍如何使用JavaScript判断IE浏览器版本。针对IE11中ActiveXObject行为变化的问题,提供了兼容写法。通过检测XMLHttpRequest、document.documentMode、alert(-[1,])及addEventListener等特性,区分IE6至IE11各版本,并给出判断其他浏览器的示例代码。
下文通过代码演示具体操作:
判断IE与非IE浏览器
IE浏览器支持ActiveXObject,非IE浏览器不支持。在IE11出现前,判断IE与非IE常采用如下方式:
代码如下:
function isIe(){
return window.ActiveXObject ? true : false;
}
但在IE11中上述判断返回false,我在IE11测试如下代码:
代码如下:
alert(window.ActiveXObject);
alert(typeof window.ActiveXObject);为何ActiveXObject存在,但typeof结果为undefined?请解释原因。
微软官网说明了IE11中ActiveXObject的差异。
代码如下:
alert("ActiveXObject" in window)//在ie11下返回的是true以下直接给出兼容IE11的IE与非IE浏览器判断方法。
代码如下:
function isIe(){
return ("ActiveXObject" in window);
}判断IE6浏览器
判断IE6浏览器
IE7起支持XMLHttpRequest,仅IE6不支持。结合isIe()函数,判断IE6方法如下:
代码如下:
function isIe6() {
// ie6是不支持window.XMLHttpRequest的
return isIe() && !window.XMLHttpRequest;
}判断IE7浏览器
判断IE7浏览器
IE8起支持documentMode,IE7不支持但支持XMLHttpRequest。判断方法如下:
代码如下:
function isIe7() {
//只有IE8+才支持document.documentMode
return isIe() && window.XMLHttpRequest && !document.documentMode;
}
判断IE8浏览器
判断IE8浏览器
IE9起微软趋向标准,IE678为“非标准”,IE9+及Chrome、Firefox为“标准”。区别之一是alert(-[1,]):IE678打印NaN,标准浏览器打印-1。
据此判断IE8的方法如下:
function isIe8(){
// alert(!-[1,])//->IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为false
return isIe() &&!-[1,]&&document.documentMode;
}
判断IE9、IE10、IE11浏览器
判断IE9、IE10、IE11浏览器
IE8起支持JSON,IE10起支持严格模式。IE9+下alert(!-[1,])返回false,IE9+支持addEventListener,但IE11不支持attachEvent。据此区分IE9、IE10、IE11。
判断其他浏览器
判断其他浏览器
//检测函数
var check = function(r) {
return r.test(navigator.userAgent.toLowerCase());
};
var statics = {
/**
* 是否为webkit内核的浏览器
*/
isWebkit : function() {
return check(/webkit/);
},
/**
* 是否为火狐浏览器
*/
isFirefox : function() {
return check(/firefox/);
},
/**
* 是否为谷歌浏览器
*/
isChrome : function() {
return !statics.isOpera() && check(/chrome/);
},
/**
* 是否为Opera浏览器
*/ isOpera : function() {
return check(/opr/);
},
/**
* 检测是否为Safari浏览器
*/
isSafari : function() {
// google chrome浏览器中也包含了safari
return !statics.isChrome() && !statics.isOpera() && check(/safari/)
}
};
以上为本文全部内容,希望有所帮助。