Как определить IE 8 с помощью jQuery?
Мне нужно определить не только тип браузера, но и версию, используя jQuery.
В основном мне нужно выяснить, является ли это IE 8 или нет.
Я не уверен, правильно ли я делаю это.
Если я это сделаю:
if (jQuery.browser.version >= 8.0) {
dosomething}
Я не уверен, что он будет работать для версии 8.123.45.6 или будет?
Изменить: обратите внимание, что JQuery 2+ отказался от поддержки IE8 и ниже и, следовательно, больше не может использоваться для обнаружения IE8. Если вы используете текущую версию JQuery, необходимо использовать решение Non-JQuery.
Ответы
Ответ 1
Документировано в jQuery API Documentation. Проверьте для Internet Explorer $.browser.msie
, а затем проверьте его версию с помощью $.browser.version
.
UPDATE: $. браузер удален в jQuery 1.9
Метод jQuery.browser() устарел с момента jQuery 1.3 и удален в 1.9. При необходимости он доступен как часть плагина jQuery Migrate. Мы рекомендуем использовать обнаружение функций с помощью библиотеки, такой как Modernizr.
Ответ 2
Я думаю, лучший способ был бы таким:
Из шаблона HTML5:
<!--[if lt IE 7]> <html lang="en-us" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html lang="en-us" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html lang="en-us" class="no-js ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]-->
в JS:
if( $("html").hasClass("ie8") ) { /* do your things */ };
тем более, что $.browser
был удален из jQuery 1.9 +.
Ответ 3
Это должно работать для всех младших версий IE8
if ($.browser.msie && parseInt($.browser.version, 10) === 8) {
alert('IE8');
} else {
alert('Non IE8');
}
- обновить
Обратите внимание, что $. browser удален из jQuery 1.9
Ответ 4
Не забывайте, что вы также можете использовать HTML для обнаружения IE8.
<!--[if IE 8]>
<script type="text/javascript">
ie = 8;
</script>
<![endif]-->
После этого все ваши скрипты позволят вам просто проверить переменную "ie" или что-то еще.
Ответ 5
document.documentMode - undefined, если браузер не IE8,
он возвращает 8 для режима стандартов и 7 для "совместимых с IE7"
Если он работает как IE7, существует множество функций css и dom, которые не поддерживаются.
Ответ 6
Предполагая, что...
- ... что это корявый механизм рендеринга старых версий IE, которые вы заинтересованы в обнаружении, чтобы стиль выглядел правильно в старом IE (в противном случае используйте обнаружение функции)
- ... что вы не можете просто добавлять условные комментарии к HTML - например. для JS-плагинов, которые могут быть применены к любой странице (в противном случае просто выполняйте трюк условных классов на
<body>
или <html>
)
... то это, вероятно, лучший трюк (на основе этого не-jQuery, немного менее гибкого варианта). Затем он создает тесты, а затем удаляет соответствующий условный комментарий.
(Условные комментарии игнорируются в IE10 + "режим стандартов" - но это должно быть хорошо, поскольку IE10 + "режим стандартов" не имеет сумасшедшего механизма рендеринга!)
Отбросить эту функцию:
function isIE( version, comparison ){
var $div = $('<div style="display:none;"/>');
// Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
$div.appendTo($('body'));
$div.html('<!--[if '+(comparison||'')+' IE '+(version||'')+']><a> </a><![endif]-->');
var ieTest = $div.find('a').length;
$div.remove();
return ieTest;
}
Затем используйте его следующим образом:
if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }
if(isIE(8)){ /* runs in IE8 */ }
if(isIE(9)){ /* runs in IE9 */ }
if(isIE(8,'lte')){ /* runs in IE8 or below */ }
if(isIE(6,'lte')){ /* if you need this, I pity you... */ }
Я также предлагаю кэшировать результаты этой функции, поэтому вам не нужно ее повторять. Например, вы можете использовать строку (comparison||'')+' IE '+(version||'')
в качестве ключа для хранения и проверить результат этого теста в каком-либо объекте.
Ответ 7
Примечание:
1) $.browser, похоже, выпадает в jQuery 1.9+ (как отмечено Mandeep Jain). Рекомендуется использовать .support.
2) $. browser.version может вернуть "7" в IE > 7, когда браузер находится в режиме "совместимости".
3) Начиная с IE 10, условные комментарии больше не будут работать.
4) jQuery 2.0+ отключит поддержку для IE 6/7/8
5) document.documentMode определяется как только в браузерах Internet Explorer 8+. Возвращаемое значение сообщит вам, в каком режиме совместимости работает Internet Explorer. Тем не менее, это не хорошее решение.
Я попробовал множество параметров .support(), но кажется, что когда браузер IE (9+) находится в режиме совместимости, он будет просто вести себя как IE 7...: (
До сих пор я нашел, что это работает (kind-a):
(если documentMode не определен и htmlSerialize и непрозрачность не поддерживаются, тогда вы, скорее всего, смотрите на IE < 8...)
if(!document.documentMode && !$.support.htmlSerialize && !$.support.opacity)
{
// IE 6/7 code
}
Ответ 8
Если вы играете с версиями браузера, это не очень часто приводит к хорошим результатам. Вы не хотите реализовывать его самостоятельно. Но вы можете Modernizr, сделанные Полом Ирришем и другими умными людьми. Он обнаружит, что браузер действительно может сделать, и поместите соответствующие классы в элемент <html>
. Однако с Modernizr вы можете протестировать версию IE следующим образом:
$('html.lt-ie9').each() {
// this will execute if browser is IE 8 or less
}
Аналогично, вы можете использовать .lt-ie8
и .lt-ie7
.
Ответ 9
Вы также должны посмотреть jQuery.support. Обнаружение функции намного надежнее, чем обнаружение браузера для кодирования вашей функциональности (если только вы не пытаетесь зарегистрировать версии браузера).
Ответ 10
Вы можете легко определить тип и версию браузера, используя этот jQuery
$(document).ready(function()
{
if ( $.browser.msie ){
if($.browser.version == '6.0')
{ $('html').addClass('ie6');
}
else if($.browser.version == '7.0')
{ $('html').addClass('ie7');
}
else if($.browser.version == '8.0')
{ $('html').addClass('ie8');
}
else if($.browser.version == '9.0')
{ $('html').addClass('ie9');
}
}
else if ( $.browser.webkit )
{ $('html').addClass('webkit');
}
else if ( $.browser.mozilla )
{ $('html').addClass('mozilla');
}
else if ( $.browser.opera )
{ $('html').addClass('opera');
}
});
Ответ 11
Здесь браузер Jquery обнаруживает плагин, чтобы идентифицировать обнаружение браузера /os.
Вы можете использовать это для стилизации после включения плагина.
$("html").addClass($.os.name);
$("body").addClass($.browser.className);
$("body").addClass($.browser.name);
Ответ 12
Вы можете использовать $.browser для определения имени браузера. Возможные значения:
- webkit (с jQuery 1.4)
- сафари (устаревший)
- опера
- MSIE
- Mozilla
или получить логический флаг: $.browser.msie будет true, если браузер MSIE.
как для номера версии, если вас интересует только основной номер выпуска - вы можете использовать parseInt ($. browser.version, 10). не нужно самостоятельно разбирать строку $.browser.version.
В любом случае свойство $.support доступно для обнаружения поддержки определенных функций, а не для использования $.browser.