Обнаружение браузера с JQuery

Я пытаюсь использовать

    jQuery(document).ready(function () {
        if (!jQuery.browser.msie <= 7.99) {
                jQuery('#element').css('display', 'block');
        }
    });

Но это, кажется, не работает? Что я делаю неправильно?

Спасибо

Править: Используйте условные комментарии

<!--[if !IE]>
<!--[if lt IE 8]> 

//do stuff
<![endif]-->
<![endif]-->
6
задан Tom 19 July 2010 в 18:09
поделиться

5 ответов

jQuery.browser.version - это то, что вы ищете. И вам, вероятно, следует parseFloat его.

В общем, на это смотрят свысока, полагаясь на сниффинг браузера, если нет абсолютно никакого способа обнаружить особенности. Это может помочь нам рассказать, в чем заключается ваша настоящая проблема .

РЕДАКТИРОВАТЬ: Вы должны использовать условные комментарии для обслуживания правил / таблиц стилей для IE7 и ниже.

7
ответ дан 8 December 2019 в 15:58
поделиться

Это, кажется, работает из моего ограниченного тестирования:

jQuery(document).ready(function () {
  if(jQuery.browser.msie){
     if(parseFloat(jQuery.browser.version) < 8){
        //Versions of IE less than 8
        jQuery('#element').css('display', 'block');
     }
     else{
       //code for versions of IE at least 8 (currently 8 and 9)
     }
  }
  else{
     //code for browsers other than IE (Firefox Safari, chrome, Opera, etc.)
  }
});
3
ответ дан 8 December 2019 в 15:58
поделиться
jQuery.browser.msie

возвращает истину или ложь

jQuery.browser.version

проверяет версию браузера.

0
ответ дан 8 December 2019 в 15:58
поделиться

Это не ответ на ваш конкретный вопрос, но я бы предложил гораздо более простую методологию. Используйте условные комментарии IE, чтобы применить определенный идентификатор к вашему тегу body. Например:

<!--[if !IE]> -->
<body>
<!--<![endif]-->
<!--[if IE 7]>
<body id="IE7">
<![endif]-->

Тогда становится довольно тривиально обнаружить его через jQuery:

if($('body').is('#IE7'))...
3
ответ дан 8 December 2019 в 15:58
поделиться

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

<!--[if lt IE 8]>
  <style type="text/css">#element { display: none; }</style>
<![endif]-->

Это скроет элемент в IE7 и ниже. Вам не нужен какой-либо скрипт для этого, просто удалите display: none , которое в настоящее время скрывает его изначально из исходной таблицы стилей (или встроенной).

Что касается комментариев, касающихся Google Pagespeed, которым это не нравится ... игнорируйте это, если вам нужно исправить ошибку IE7, исправьте ее правильным способом. Это быстрее и проще ... если бы Pagespeed смог проверить, что вы используете для этого пользовательский агент (что и делает jQuery.browser ), он бы не рекомендовал это делать, он просто не есть механизм, который сообщит вам, что это худший подход.

2
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: