Обнаружение IE6 с использованием jQuery.support - PullRequest
34 голосов
/ 25 февраля 2009

У всех есть идеи, как протестировать что-то конкретное для IE6 (а не для IE7), используя jquery.support?

.

Моя проблема в том, что IE6 поддерживает: hover psuedo-class только для якорных элементов, а IE7 поддерживает его для всех элементов (таких как FF, Chrome и т. Д.). Поэтому я хочу сделать что-то особенное на случай, если браузер не поддерживает: наведение на все элементы ... поэтому мне нужен способ проверить эту функцию. (не хочу использовать jQuery.browser). Есть идеи?

Ответы [ 8 ]

55 голосов
/ 25 февраля 2009

Хотя рекомендуется проверять поддержку функций, а не пользовательский агент, не существует простого способа проверить что-то вроде поддержки свойства 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 }
21 голосов
/ 25 февраля 2009

Вы можете использовать специфический для Microsoft Internet Explorer Условный комментарий , чтобы применить определенный код только к IE6.

<!--[if IE 6]>
  Special instructions for IE 6 here... e.g.
  <script>...hook hover event logic here...</script>
<![endif]-->
20 голосов
/ 18 апреля 2009

Thickbox использует

if(typeof document.body.style.maxHeight === "undefined") {
    alert('ie6');
} else {
    alert('other');
}
2 голосов
/ 25 февраля 2009

Это один из примеров того, где мы должны сделать шаг назад и спросить, почему вы это делаете.

Обычно это создание меню. Если это так, я настоятельно рекомендую вам избавить себя от головной боли и использовать плагин, такой как superfish или одну из многих альтернатив.

Если нет, я предлагаю вам использовать jQuery hover () слушатель событий. Например:

$("td").hover(function() {
  $(this).addClass("hover");
}, function() {
  $(this).removeClass("hover");
});

будет делать то, что вы хотите.

1 голос
/ 03 декабря 2011

Просто для удовольствия (без использования 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';
}
?>
1 голос
/ 20 июня 2009

Я бы использовал что угодно: hover - http://www.xs4all.nl/~peterned/csshover.html

Он использует поведение и хорошо работает для меня.

0 голосов
/ 29 ноября 2011
if ($.browser.msie && parseInt($.browser.version, 10) == 6) {
  alert("I'm not dead yet!"); 
}
0 голосов
/ 25 февраля 2009

jQuery.support не имеет свойств для обнаружения: поддержка при наведении http://docs.jquery.com/Utilities/jQuery.support

Но, вероятно, вы можете просто использовать событие hover () http://docs.jquery.com/Events/hover

...