Как я могу обнаружить IE 8 с помощью jQuery?
Мне нужно определить не только тип браузера, но и версию, используя jQuery.
В основном мне нужно выяснить, является ли это IE 8 или нет.
Я не уверен, если я делаю это правильно.
Если я это сделаю:
if (jQuery.browser.version >= 8.0) {
dosomething}
Я не уверен, что это будет работать для версии 8.123.45.6 или это?
Edit: обратите внимание, что JQuery 2+ отказался от поддержки IE8 и ниже, и поэтому больше не может использоваться для обнаружения IE8. Если используется текущая версия JQuery, это необходимо использовать решение, отличное от JQuery.
12 ответов:
это задокументировано в jQuery API Documentation. Проверьте наличие Internet Explorer с помощью
$.browser.msieи затем проверить его версию с$.browser.version.обновление:$.браузер удален в jQuery 1.9
jQuery.метод browser () является устаревшим с момента jQuery 1.3 и удаляется в 1.9. при необходимости он доступен как часть плагина jQuery Migrate. Мы рекомендуем использовать функцию обнаружения с библиотекой, например Modernizr.
Я думаю, что лучше всего было бы так:
из шаблона 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+.
Это должно работать для всех минорных версий IE8
if ($.browser.msie && parseInt($.browser.version, 10) === 8) { alert('IE8'); } else { alert('Non IE8'); }-- update
обратите внимание:$.браузер и удалено из jQuery 1.9
Не забывайте, что вы также можете использовать HTML для обнаружения IE8.
<!--[if IE 8]> <script type="text/javascript"> ie = 8; </script> <![endif]-->наличие этого перед всеми вашими скриптами позволит вам просто проверить переменную " ie " или что-то еще.
документ.documentMode не определено, если браузер не IE8,
он возвращает 8 для стандартного режима и 7 для 'compatable to IE7'
Если он работает как IE7, есть много функций css и dom, которые не будут поддерживаться.
предполагая...
- ...что это хрустящий движок из старых версий IE вы заинтересованы в обнаружении, чтобы сделать стиль выглядеть правильно в старом IE (в противном случае, используйте функцию обнаружения)
- ...что ты нельзя просто добавить условные комментарии к HTML - например, для JS плагинов, которые могут быть применены к любой странице (в противном случае, просто сделайте трюк условных классов на
<body>или<html>)...после этого это, наверное, лучший трюк (на основе это не jQuery, чуть менее гибкий вариант). Он создает затем тесты для затем удаляет соответствующий условный комментарий.
(условные комментарии игнорируются в IE10 + 'standards mode' - но это должно быть нормально, так как IE10+' standards mode ' не имеет сумасшедшего движка рендеринга!)
падение в этой функции:
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||'')как ключ для хранения и проверки результата этого теста в каком-либо объекте.
Примечание:
1) $.браузер, похоже, был удален в jQuery 1.9+ (как отметил Мандип Джайн). Это рекомендовано использовать .поддержка вместо.
2) $.браузер.версия может вернуть "7 "в IE >7, когда браузер находится в режиме" совместимость".
3) по состоянию на IE 10,условные комментарии больше не будет работать.
4) в jQuery 2.0+ упадет поддержка IE 6/7/8
5) документ.documentMode кажется определенным только в браузерах Internet Explorer 8+. Возвращенное значение покажет вам, в каком режиме "совместимости" работает Internet Explorer. Тем не менее, это не очень хорошее решение.
я попробовал много .параметры поддержки (), но похоже, что когда браузер IE (9+) находится в режиме совместимости, он просто будет вести себя как IE 7 ... : (
до сих пор я только нашел эту работу (вид-а):
(если documentMode не определен и htmlSerialize и непрозрачность не поддерживаются, то вы, скорее всего, смотрите на IE
if(!document.documentMode && !$.support.htmlSerialize && !$.support.opacity) { // IE 6/7 code }
если вы возиться с версиями браузера это приводит к не очень хорошо очень часто. Вы не хотите реализовывать его самостоятельно. Но вы можете Modernizr сделано полом Айришем и другими умными людьми. Он будет определять, что браузер на самом деле можете сделать и поставить соответствующие классы в
<html>элемент. Однако с Modernizr, вы можете проверить версию IE такой:$('html.lt-ie9').each() { // this will execute if browser is IE 8 or less }аналогично, вы можете использовать
.lt-ie8и.lt-ie7.
вы также должны смотреть на jQuery.поддержка. Обнаружение функций намного надежнее, чем обнаружение браузера для кодирования вашей функциональности (если вы только не пытаетесь регистрировать версии браузера).
вы можете легко определить, какой тип и версия браузера, используя этот 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'); } });
здесь это плагин обнаружения браузера Jquery для идентификации обнаружения браузера / ОС.
вы можете использовать это для стилизации цели после включения плагина.
$("html").addClass($.os.name); $("body").addClass($.browser.className); $("body").addClass($.browser.name);
вы можете использовать $.браузер для определения имени браузера. возможные значения :
- webkit (начиная с jQuery 1.4)
- safari (не рекомендуется)
- опера
- msie
- mozilla
или сделать флаг типа boolean: $.браузер.msie будет истинным, если браузер MSIE.
Что касается номера версии, если вас интересует только основной номер версии - вы можете использовать parseInt($.браузер.версия, 10). нет необходимости разберем $.браузер.версия строка себя.
Во Всяком Случае,$.свойство support доступно для обнаружения поддержки определенных функций, а не для использования $.браузер.
Comments