Я пытаюсь использовать
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]-->
jQuery.browser.version
- это то, что вы ищете. И вам, вероятно, следует parseFloat
его.
В общем, на это смотрят свысока, полагаясь на сниффинг браузера, если нет абсолютно никакого способа обнаружить особенности. Это может помочь нам рассказать, в чем заключается ваша настоящая проблема .
РЕДАКТИРОВАТЬ: Вы должны использовать условные комментарии для обслуживания правил / таблиц стилей для IE7 и ниже.
Это, кажется, работает из моего ограниченного тестирования:
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.)
}
});
jQuery.browser.msie
возвращает истину или ложь
jQuery.browser.version
проверяет версию браузера.
Это не ответ на ваш конкретный вопрос, но я бы предложил гораздо более простую методологию. Используйте условные комментарии IE, чтобы применить определенный идентификатор к вашему тегу body. Например:
<!--[if !IE]> -->
<body>
<!--<![endif]-->
<!--[if IE 7]>
<body id="IE7">
<![endif]-->
Тогда становится довольно тривиально обнаружить его через jQuery:
if($('body').is('#IE7'))...
Вы должны использовать условные комментарии для этого, быстрее, проще, короче, например:
<!--[if lt IE 8]>
<style type="text/css">#element { display: none; }</style>
<![endif]-->
Это скроет элемент в IE7 и ниже. Вам не нужен какой-либо скрипт для этого, просто удалите display: none
, которое в настоящее время скрывает его изначально из исходной таблицы стилей (или встроенной).
Что касается комментариев, касающихся Google Pagespeed, которым это не нравится ... игнорируйте это, если вам нужно исправить ошибку IE7, исправьте ее правильным способом. Это быстрее и проще ... если бы Pagespeed смог проверить, что вы используете для этого пользовательский агент (что и делает jQuery.browser
), он бы не рекомендовал это делать, он просто не есть механизм, который сообщит вам, что это худший подход.