некоторые браузеры IE не показывают истину для определения браузера IE6 - PullRequest
1 голос
/ 19 января 2012

Итак, я использую jQuery 1.3.2 (да, он старый и сейчас я не могу обновить).

Проблема в том, что я пытаюсь отказаться от поддержки IE6 для нашего внутреннего сайта и обновить браузер,У меня есть эта проверка

if($.browser.msie && $.browser.version=="6.0") {
    // do something...
}

Но во время тестирования (некоторые) пользователи Firefox видят условие do something и не должны этого делать.Вот некоторые из пользовательских агентов, которые, я думаю, могут быть причиной проблемы.

  • UserAgent: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 535.7 (KHTML, как Gecko) Chrome / 16.0.912.75 Safari / 535.7
  • UserAgent: Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2.23) Gecko / 20110920 Firefox / 3.6.23
  • UserAgent:Mozilla / 5.0 (Windows NT 5.1) AppleWebKit / 535.7 (KHTML, как Gecko) Chrome / 16.0.912.75 Safari / 535.7
  • UserAgent: Mozilla / 5.0 (Windows; U; Windows NT 6.1; ru-ru; rv: 1.9.2.25) Gecko / 20111212 Firefox / 3.6.25
  • Агент пользователя: Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2.12) Gecko / 20101026 Firefox / 3.6.12

Требуется ли дополнительная проверка IE6?

Примечание. У конечного пользователя не установлены надстройки.Я думал, что что-то вроде IE-Tabs может вызвать проблему, но это не так

ОБНОВЛЕНИЕ:

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

var ie6 = $.browser.msie && parseInt($.browser.version) === 6 && typeof window['XMLHttpRequest'] !== "object";
if(typeof document.body.style.maxHeight === "undefined" && ie6) {
    alert('Your browser is IE6');
}

Вопросы, связанные с данной:

Ответы [ 6 ]

5 голосов
/ 19 января 2012

Не использовать браузер обнаружение. Функция обнаружения намного приятнее. И если вы хотите отобразить сообщение или что-то только для пользователей IE 6, я бы рекомендовал вместо этого использовать условные комментарии .

<!--[if IE 6]>
    <script type="text/javascript">
        // do something...
    </script>
<![endif]-->
1 голос
/ 27 января 2012

Спасибо всем, кто помог мне найти то, что я искал, может быть, это может помочь другим

var ie6 = $.browser.msie && parseInt($.browser.version) === 6 && typeof window['XMLHttpRequest'] !== "object";
if(typeof document.body.style.maxHeight === "undefined" && ie6) {
    alert('Your browser is IE6');
}
1 голос
/ 19 января 2012

С Документация jQuery

Свойство $ .browser устарело в jQuery 1.3, и его функциональность может быть перенесена в поддерживаемый командой плагин в будущем выпуске jQuery ....

Всегда по возможности лучше избегать кода, специфичного для браузера. Свойство $ .support доступно для обнаружения поддержки определенных функций, а не для использования $ .browser.

В качестве альтернативы вы можете использовать:

  1. Обозреватель обычного браузера для записи с использованием объекта навигатора
  2. условные выражения IE, что-то вроде this
0 голосов
/ 20 января 2012

Что вы пытаетесь сделать, чтобы знать, является ли браузер IE6? Давайте устраним это.

0 голосов
/ 19 января 2012

, если вы хотите, чтобы строка сценария находила IE6 и ниже, и вы не можете использовать условные комментарии:

if ('\ v' === 'v' &&! Window.XMLHttpRequest) { // сделай что-нибудь... }

0 голосов
/ 19 января 2012

Вы можете использовать это: <!--[If IE 6]> Your code here <![endif]--> предназначается только для IE6.http://www.unintentionallyblank.co.uk/2006/09/19/if-internet-explorer-then-do-something-else-a-how-to/

...