Как я могу обнаружить IE 8 с помощью jQuery?



Мне нужно определить не только тип браузера, но и версию, используя jQuery.
В основном мне нужно выяснить, является ли это IE 8 или нет.



Я не уверен, если я делаю это правильно.



Если я это сделаю:



if (jQuery.browser.version >= 8.0) {
dosomething}


Я не уверен, что это будет работать для версии 8.123.45.6 или это?



Edit: обратите внимание, что JQuery 2+ отказался от поддержки IE8 и ниже, и поэтому больше не может использоваться для обнаружения IE8. Если используется текущая версия JQuery, это необходимо использовать решение, отличное от JQuery.

541   12  

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>&nbsp;</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

    Ничего не найдено.