web-dev-qa-db-fra.com

Détection d'IE6 à l'aide de jQuery.support

Quelqu'un a-t-il des idées sur la façon de tester quelque chose de spécifique pour IE6 (et non IE7) en utilisant jquery.support?

Mon problème est que IE6 prend en charge: survolez la classe psuedo uniquement pour les éléments d'ancrage et IE7 le prend en charge pour tous les éléments (comme FF, Chrome, etc.). Je veux donc faire quelque chose de spécial au cas où le navigateur ne prend pas en charge: survoler pour tous les éléments ... j'ai donc besoin d'un moyen de tester cette fonctionnalité. (je ne veux pas utiliser jQuery.browser). Des idées?

34
Jaime

Bien qu'il soit recommandé de vérifier la prise en charge des fonctionnalités plutôt que l'agent utilisateur, il n'y a pas de moyen simple de vérifier quelque chose comme la prise en charge d'une propriété css à l'aide de JavaScript. Je vous recommande de suivre la suggestion d'affiches ci-dessus d'utiliser des commentaires conditionnels ou d'utiliser jQuery.browser. Une implémentation simple (non validée pour les performances ou les bugs) pourrait ressembler à ceci:

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');
    }
}

Dans votre balisage, ajoutez la classe .jshover à tout élément sur lequel vous souhaitez effectuer des effets CSS de survol. Dans votre CSS, ajoutez des règles comme celle-ci:

ul li:hover, ul li.over { rules here }
55
FriendOfFuture

Vous pouvez utiliser un Microsoft Internet Explorer spécifique Commentaire conditionnel pour appliquer un code spécifique à IE6 uniquement.

<!--[if IE 6]>
  Special instructions for IE 6 here... e.g.
  <script>...hook hover event logic here...</script>
<![endif]-->
21
scunliffe

Thickbox utilise

if(typeof document.body.style.maxHeight === "undefined") {
    alert('ie6');
} else {
    alert('other');
}
20
Andrew

Ceci est un exemple où nous devrions prendre du recul et demander pourquoi vous faites cela.

Il s'agit généralement de créer un menu. Si c'est le cas, je vous suggère fortement de vous épargner quelques maux de tête et d'utiliser un plug-in comme superfish ou l'une des nombreuses alternatives.

Sinon, je vous suggère d'utiliser l'écouteur d'événements jQuery hover () . Par exemple:

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

fera ce que vous voulez.

2
cletus

Juste pour le plaisir (sans utiliser jQuery.support):

$(document).ready(function(){
    if(/msie|MSIE 6/.test(navigator.userAgent)){
        alert('OMG im using IE6');
    }
});

Vous pouvez également le faire via php

<?
if(preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua)){
    echo 'OMG im using IE6';
}
?>
1
Andres SK

J'utiliserais n'importe quoi: hover - http://www.xs4all.nl/~peterned/csshover.html

Il utilise le comportement et fonctionne bien pour moi.

1
Piotr Sarnacki

jQuery.support n'a aucune propriété à détecter: prise en charge du survol http://docs.jquery.com/Utilities/jQuery.support

Mais vous pouvez probablement simplement utiliser l'événement hover () http://docs.jquery.com/Events/hover

0
alex2k8