Обнаружение IE6 с помощью jQuery.support
У кого-нибудь есть идеи о том, как тестировать что-то конкретное для IE6 (а не IE7) с помощью jquery.support?
Моя проблема в том, что IE6 поддерживает: hover psuedo-class только для элементов привязки, а IE7 поддерживает его для всех элементов (как FF, Chrome и т.д.). Поэтому я хочу сделать что-то особенное, если браузер не поддерживает: наведите указатель на все элементы... таким образом, мне нужен способ проверить эту функцию. (не хотите использовать jQuery.browser). Любые идеи?
Ответы
Ответ 1
Хотя хорошей проверкой на поддержку функций, а не на агента пользователя, нет простого способа проверить что-то вроде поддержки свойства css с использованием JavaScript. Я рекомендую вам либо следовать приведенным выше плакатам, предлагая использовать условные комментарии, либо использовать jQuery.browser. Простая реализация (не проверенная для производительности или ошибок) может выглядеть так:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
// search for selectors you want to add hover behavior to
$('.jshover').hover(
function() {
$(this).addClass('over');
},
function() {
$(this).removeClass('over');
}
}
В вашей разметке добавьте класс .jshover для любого элемента, на который вы хотите навешивать css-эффекты. В своем CSS добавьте следующие правила:
ul li:hover, ul li.over { rules here }
Ответ 2
Вы можете использовать специальный , чтобы применить конкретный код только к IE6.
<!--[if IE 6]>
Special instructions for IE 6 here... e.g.
<script>...hook hover event logic here...</script>
<![endif]-->
Ответ 3
Thickbox использует
if(typeof document.body.style.maxHeight === "undefined") {
alert('ie6');
} else {
alert('other');
}
Ответ 4
Это один из примеров того, где мы должны сделать шаг назад и спросить, почему вы это делаете.
Обычно это создает меню. Если это так, я настоятельно рекомендую вам избавиться от головных болей и использовать плагин, например superfish или один из многих альтернатив.
Если нет, я предлагаю вам использовать jQuery hover() прослушиватель событий. Например:
$("td").hover(function() {
$(this).addClass("hover");
}, function() {
$(this).removeClass("hover");
});
сделает то, что вы хотите.
Ответ 5
Я бы использовал Whatever: hover - http://www.xs4all.nl/~peterned/csshover.html
Он использует поведение и хорошо работает для меня.
Ответ 6
Просто для удовольствия (не используя jQuery.support):
$(document).ready(function(){
if(/msie|MSIE 6/.test(navigator.userAgent)){
alert('OMG im using IE6');
}
});
Вы также можете сделать это с помощью php
<?
if(preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua)){
echo 'OMG im using IE6';
}
?>
Ответ 7
jQuery.support не имеет свойств для обнаружения: поддержка зависания
http://docs.jquery.com/Utilities/jQuery.support
Но, вероятно, вы можете просто использовать событие hover()
http://docs.jquery.com/Events/hover
Ответ 8
if ($.browser.msie && parseInt($.browser.version, 10) == 6) {
alert("I'm not dead yet!");
}