Согласно совместимости браузера XMLHttpRequest , мы видим, что XMLHttpRequest поддерживает IE 7+. Если мы хотим использовать его в IE 5, мы должны использовать его через ActiveXObject ('Microsoft.XMLHTTP'). Итак, мы могли бы использовать эту функцию для обнаружения браузера IE 7.
Для IE6, маскирующегося под IE7, я полагаю, что, возможно, вы используете строку userAgent для определения IE версии браузера. После тестирования UserAgent на моей стороне кажется, что в настоящее время, если мы изменим эмуляцию разработчика F12 на режим IE 5 и IE 7, строка UserAgent будет выглядеть следующим образом:
IE 7 Mode : «mozilla / 4.0 (совместимый; ms ie 7.0; windows nt 10.0; wow64; trident / 7.0; .net4.0c; .net4.0e;. net clr 2.0.50727;. net clr 3.0.30729;. net clr 3.5.30729) "
IE 5 Режим : "mozilla / 4.0 (совместимый; ms ie 7.0; windows nt 10.0; wow64; trident / 7.0; .net4.0c; .net4.0e;. net clr 2.0.50727;. net clr 3.0 .30729;. net clr 3.5.30729) "
Как мы видим, они используют один и тот же UserAgent, похоже, что в режиме IE 5 Inte rnet Explorer меняет свой пользовательский агент на «MS IE 7.0».
Я также пытаюсь использовать условный комментарий для определения версии браузера IE, похоже, он хорошо работает на IE 5+.
Пожалуйста, проверьте следующий образец:
<center>
<h1 style="color:blue">How to detect IE</h1>
<script>
//detects if user is using Internet Explorer based on the userAgent
//returns version of IE or false, if browser is not IE
//Function to detect IE or not
function IEdetection() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older, return version number
return ('IE ' + parseInt(ua.substring(
msie + 5, ua.indexOf('.', msie)), 10));
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11, return version number
var rv = ua.indexOf('rv:');
return ('IE ' + parseInt(ua.substring(
rv + 3, ua.indexOf('.', rv)), 10));
}
var edge = ua.indexOf('Edge/');
if (edge > 0) {
//Edge (IE 12+), return version number
return ('IE ' + parseInt(ua.substring(
edge + 5, ua.indexOf('.', edge)), 10));
}
// User uses other browser
return ('Not IE');
}
var result = IEdetection();
document.write("UserAgent: <br/>");
document.write(window.navigator.userAgent);
document.write("<br/>Using UserAgent detection, result: <br/>");
document.write(result);
var ie = (function () {
if (window.ActiveXObject === undefined) return null; //Not IE
if (!window.XMLHttpRequest) return 6;
if (!document.querySelector) return 7;
if (!document.addEventListener) return 8;
if (!window.atob) return 9;
if (!document.__proto__) return 10;
return 11;
})();
document.write("<br/>Using feature detection, Result:<br/>");
document.write(ie);
</script>
<!--[if IE 5]>
<p class="ieversion" data_version="5">You are using Internet Explorer 5.</p>
<![endif]-->
<!--[if IE 7]>
<p class="ieversion" data_version="7">You are using Internet Explorer 7.</p>
<![endif]-->
<!--[if IE 9]>
<p class="ieversion" data_version="9">You are using Internet Explorer 9.</p>
<![endif]-->
<script>
if (!document.getElementsByClassName) {
document.getElementsByClassName = function (search) {
var d = document, elements, pattern, i, results = [];
if (d.querySelectorAll) { // IE8
return d.querySelectorAll("." + search);
}
if (d.evaluate) { // IE6, IE7
pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]";
elements = d.evaluate(pattern, d, null, 0, null);
while ((i = elements.iterateNext())) {
results.push(i);
}
} else {
elements = d.getElementsByTagName("*");
pattern = new RegExp("(^|\\s)" + search + "(\\s|$)");
for (i = 0; i < elements.length; i++) {
if (pattern.test(elements[i].className)) {
results.push(elements[i]);
}
}
}
return results;
}
}
var item = document.getElementsByClassName("ieversion");
if (item.length > 0) {
document.write("<br />Using Conditional comment + JavaScript, result:<br/>");
document.write("IE version: " + item[0].getAttribute("data_version"));
}
</script>
</center>
Результат, как показано ниже: * 102 8 *
Since, the Условный комментарий поддерживает от IE 5 до IE 9, но не поддерживается в Inte rnet Explorer 10 и 11. Итак, вы можете использовать Условный комментарий для обнаружения IE 5 ~ IE 9 и использования UserAgent для обнаружения IE 10 и IE 11.