Обнаружить старые версии IE

Мне нужно определить, работает ли пользователь в старой версии IE (IE9 в порядке) из плагина jQuery, поэтому я не буду контролировать HTML.

Нам не рекомендуется разбирать строку user-agent и использовать $.browser.msie. Метод $.support также не охватывает проблему.

Итак, я понял, что это работает, но я не уверен, что это "хорошая практика".

$('body').append('<!--[if lte IE 8]><script>$("body").addClass("oldie");</script><![endif]-->');
var old_ie = $('body').is('.oldie');

Не могли бы вы использовать этот метод или придерживаться разбора строки пользовательского агента (мне нужно выяснить, является ли он IE и получить номер версии)?

Ответы

Ответ 1

Вы можете запустить этот

var ie = (function () {
    var undef, v = 3, div = document.createElement('div');

    while (
        div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->',
        div.getElementsByTagName('i')[0]
    );

    return v > 4 ? v : undef;
}());

для обнаружения версии IE.

Источник: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment

И затем

if ( ie < 9 ) {
    // do your stuff, for instance:
    window.location = 'http://getfirefox.com'; // :p
}

Ответ 2

В вашем вопросе явно не упоминалось, почему у вас возникла определенная потребность в обнаружении для IE9, поэтому, как правило, придерживается следующих рекомендаций:

Вместо того, чтобы обнаруживать конкретный браузер/версию, вы должны вместо этого обнаруживать определенные функции. Modernizr - это хорошее место, чтобы начать с этой помощью.

Ответ 3

Как насчет этого:

if (!($.browser.msie && $.browser.version < 9.0)) {
    // Apply only to IE8 and lower
}

Обратите внимание, что IE8 отображается как IE7

Ответ 4

https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx См. Ссылку выше, это может быть официальный ответ:) Вкратце, введите код на странице html.

<!--[if gte IE 9]>
<p>You're using a recent version of Internet Explorer.</p>
<script type="text/javascript">//do something</script>
<![endif]-->

<!--[if lt IE 9]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<script type="text/javascript">//do something</script>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<script type="text/javascript">//do something</script>
<![endif]>