Определить старые версии IE - PullRequest
14 голосов
/ 29 августа 2011

Мне нужно определить, использует ли пользователь более старую версию 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, и получить номер версии)?

Ответы [ 4 ]

16 голосов
/ 29 августа 2011

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

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 голосов
/ 29 августа 2011

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

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

1 голос
/ 14 мая 2015

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]>
1 голос
/ 19 ноября 2011

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

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

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

...