Ответ Марселя Корпеля больше не работает (в IE 10 он возвращает undef, поэтому IE 10 выглядит как не IE).ПРИМЕЧАНИЕ: теперь обновлено для работы с IE 11.
Это вариант этого кода, но он исходит из рекомендаций Microsoft .Если вы использовали предыдущий код, вы можете просто вставить эту замену, поскольку она создается так, чтобы вызываться точно так же.
В отличие от условных комментариев / компиляции, она также должна нормально работать с минимизаторами.
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
// ie === undefined
// If you're in IE (>=5) then you can determine which version:
// ie === 7; // IE7
// Thus, to detect IE:
// if (ie) {}
// And to detect the version:
// ie === 6 // IE6
// ie > 7 // IE8, IE9, IE10 ...
// ie < 9 // Anything less than IE9
// ----------------------------------------------------------
var ie = (function(){
var undef,rv = -1; // Return value assumes failure.
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
var trident = ua.indexOf('Trident/');
if (msie > 0) {
// IE 10 or older => return version number
rv = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
} else if (trident > 0) {
// IE 11 (or newer) => return version number
var rvNum = ua.indexOf('rv:');
rv = parseInt(ua.substring(rvNum + 3, ua.indexOf('.', rvNum)), 10);
}
return ((rv > -1) ? rv : undef);
}());
обновлен для работы с IE11.Спасибо 'acarlon' за то, что он указал, что он не работает, и 'mario' за код, на котором я основал исправление!