Обнаружение браузера с помощью JQuery - PullRequest
6 голосов
/ 19 июля 2010

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

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

Но это не похоже на работу?Что я делаю не так?

Thx

Редактировать: использовать условные комментарии

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

//do stuff
<![endif]-->
<![endif]-->

Ответы [ 6 ]

7 голосов
/ 19 июля 2010

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

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

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

3 голосов
/ 19 июля 2010

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

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

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

if($('body').is('#IE7'))...
3 голосов
/ 19 июля 2010

Это похоже на мой ограниченный тест:

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.)
  }
});
2 голосов
/ 19 июля 2010

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

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

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

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

0 голосов
/ 04 июля 2014

Вы можете использовать jQuery Browser Plugin .Он предоставляет вам объект javascript, который содержит всю информацию об используемом браузере.
Например:

  • browser.name: имя используемого браузера.
    alert($.browser.name); // this will alert 'firefox'
  • browser.versionNumber``: версия браузера (примечание: в виде целого числа).
    alert($.browser.versionNumber); // this will alert '30'

Лично я нашел его очень простым в использовании.Минимизированная версия составляет всего 1,44 КБ.Пожалуйста, обратитесь по ссылке.

0 голосов
/ 19 июля 2010
jQuery.browser.msie

возвращает true или false

jQuery.browser.version

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...