jQuery обнаруживает IE6, используя jQuery.support НЕ jQuery.browser

Я не нашел определенного способа обнаружить IE6, используя jquery.support вместо jquery.browser, который больше не поддерживается. Также мне нужно учитывать режим Quirks, тьфу !!!

Я видел пару постов в Stack, но все они ссылаются на jquery.browser, а документация для jquery.support немного расплывчата.

Любая помощь в этом была бы отличной, и спасибо заранее.

Ответы на вопрос(6)

, но, насколько я знаю, нетЭто надежный способ с использованием только функции обнаружения.

Это единственная надежная версия, которую я нашел для обнаружения IE6. Это'Это то, что я использую в SimpleModal, и это, кажется, работает хорошо:

var ie6 = $.browser.msie && parseInt($.browser.version) === 6 && typeof window['XMLHttpRequest'] !== "object";

rt

Нет, конечно нет-тот'В этом весь смысл.

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

Пока тымог работать в обратном направлении от jquery.support, чтобы угадать, какой браузер работает, а затем использовать другой код, основанный на совершенно другой функции, которая была бы совершенно извращенной. Вы'принять уже хрупкий подход, предполагая, браузер "X" поддерживает функцию "Y"и сделав его еще более хрупким, добавив еще один слой нюхающего несвязанного функционала, который может подобрать не тот браузер.

Таким образом, догма ответ, неникогда не обнаруживать IE6 или любой другой конкретный браузер. Используйте решение для поиска функций, такое как jquery.support, чтобы увидеть, какие функции вы можете использовать, но неПредполагается, что наличие или отсутствие функции "Y" означает, что вы можете или можетене использовать другую функцию "Z" связан с тем же браузером "X", Потому что это всегда пойдет не так, если у вас новый или неизвестный браузер / версияЯ не встречался раньше.

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

Неясно, находитесь ли вы в одной из этих ситуаций, поскольку в вашем вопросе нет подробностей, но когда вам действительно нужен ужасный взлом для One One Browser, примерно лучшее решение по-прежнемуусловные комментарии, упал в JavaScript или HTML.

 Phill Pafford19 авг. 2009 г., 21:50
Ничего себе, это подводит итог, спасибо. Но все еще держится за решение, если оно есть ???

    var ie6to8 = jQuery.support.leadingWhitespace;
    var ie7to8 = jQuery.support.objectAll;
    if((ie6to8 && !ie7to8) || (!ie6to8 && ie7to8)) { //simulating a XOR
       // is ie6
    }

Документация говорит, что jQuery.support.leadingWhitespace ложно на IE 6, 7 и 8. Это 's также сказал, что objectAll ложно на IEс 7 и 8. Я предположил, что это верно для других браузеров, и сделал операцию XOR для этих значений. Таким образом, это будет верно, только если значение leadWhitespace отличается от objectAll 'с, что происходит только в IE6.

Вы можете увидеть больше здесь:http://docs.jquery.com/Utilities/jQuery.support

ОБНОВЛЕНИЕ: Начиная с jQuery 1.3, перехват в браузере давно не рекомендуется, но все еще можно сделать по-старому (используя $ .browser.msie и $ .browser.version). Посмотрите здесь:http://docs.jquery.com/Release:jQuery_1.3

 Pawel Krakowiak19 авг. 2009 г., 21:27
Это может сработать, хорошая идея. :) Я не'Тщательно прочитайте документацию.
 Phill Pafford19 авг. 2009 г., 21:44
Оба, если это возможно :)
 Guilherme19 авг. 2009 г., 21:30
@ Филл Паффорд, я действительно нене знаю, это неничего не скажешь об этом в документации.
 Phill Pafford19 авг. 2009 г., 21:32
jsbin.com/odequ проверено / не удалось :(
 Guilherme19 авг. 2009 г., 21:38
Вы хотите обнаружить IE6 в режиме причуд? Или вы хотите, чтобы в режиме не причуды, а?
 Bless Yahu08 июн. 2010 г., 20:06
это было бы это?jsbin.com/odequ/4
 Guilherme19 авг. 2009 г., 22:24
Филл, см. Эту страницу:docs.jquery.com/Release:jQuery_1.3 ИщитеНет больше браузера нюхает сессия. Это'Я все проясню.
 Phill Pafford19 авг. 2009 г., 21:26
Безразлично»Не могли бы вы дать больше отзывов об этом? Это с Quarks Mode или без него?
Решение Вопроса

что авторы jQuery просто неЯ не хочу, чтобы разработчики больше проверяли, для какого браузера запущено приложение / веб-сайт. Вместо этого они хотят, чтобы мы проверили различные функции браузера и на основании этого решили, что делать. Это нене имеет значения, если этоIE6, IE8, Firefox иликакой-то новый браузер, Как разработчик приложения, вы должны знать, как поддержка браузером различных функций влияет на пользователя.способность работать с вашим приложением, и вы должны действовать соответственно.

$ .browser зависит от перехвата браузера с помощьюСтроки агента пользователя что может быть ненадежным, тем более чтоДля пользователей очень легко подделать User Agent в их браузере, не то чтобы я беспокоился об этом в целях верстки - если они поменяли свой User Agent, то это 'Они виноваты в том, что их IE6, представленный как IE7, не может правильно отобразить страницу. ;)

Вы также можете использовать $ .browser, несмотря на то, что онs устарели или попробуйте что-то написать самостоятельно. Может бытьплагин JQuery для этого уже? Я знаю, что в прошлый раз я должен был проверить IE6, я использовал этот метод ...

 Phill Pafford19 авг. 2009 г., 21:49
Спасибо, возможно, так и будет, но пока держусь = P

У Брэда Келера есть идея, Используйте условные выражения IE, подобные приведенным ниже

<!-- paulirish.<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><!--<![endif]-->

Затем с Javascript и немного JQuery вы можете сделать это ..

$(document).ready(function () { 
    if ($('html').is('.ie6')) {
       alert('You are running IE6!');
    } else if($('html').is('.ie7')) {
    alert("You are running IE7!");
    } else {
       // Browsers other than IE6 and 7.
    }
});

Редактор каннибализирует мой первый раздел кода, поэтому здесьссылка на него -http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

не желая использовать устаревший .browser, но не прочитав и не поняв .support.

Мне больше всего нравится использовать условную таблицу стилей для стиля IE6. Я просто добавил идентификатор = "IE6" к этому, а затем обнаружил идентификатор с помощью jQuery.

jQuery.fn.exists = function(){return jQuery(this).length>0;}
          if ($('#IE6').exists()) {
           //do something
          }

Кажется, это работает нормально, я попытался запустить оповещение там и получил его только в IE6, я попытался проверить страницу, и она перешла как HTML5, я не уверен, что есть более глубокая проблема с тем, что я сделал, но это пока все в порядке.

Ваш ответ на вопрос