34 votes

Détecter IE6 à l'aide de jQuery.support

Quelqu'un a une idée sur la façon de tester quelque chose de spécifique pour IE6 (et non pas IE7) en utilisant jquery.support?

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

55voto

Sasha Sklar Points 1560

Alors qu'il est de bonne pratique de vérifier la prise en charge plutôt que de l'agent utilisateur, il n'y a pas de moyen simple de vérifier quelque chose comme le support d'une propriété css à l'aide de JavaScript. Je vous recommande de suivre les affiches ci-dessus suggestion d'utiliser les commentaires conditionnels ou de l'utilisation de jQuery.le navigateur. Une mise en œuvre simple (pas validés pour l'exécution ou de 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, ajouter le .jshover de classe à n'importe quel élément que vous souhaitez hover css effets sur. Dans votre css, ajouter des règles comme ceci:

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

21voto

scunliffe Points 30964

Vous pouvez utiliser un commentaire conditionnel spécifique à Microsoft Internet Explorer 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]-->
 

20voto

Andrew Points 201

Thickbox utilise

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

2voto

cletus Points 276888

C'est un exemple de cas où nous devrions prendre du recul et de se demander pourquoi vous faites cela.

Typiquement, il s'agit de créer un menu. Si oui, je vous suggère fortement de vous épargner les maux de tête et d'utiliser un plug-in comme superfish ou l'une des nombreuses alternatives.

Si non je vous suggérons d'utiliser le jQuery hover() de l'écouteur d'événement. Par exemple:

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

faire ce que vous souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X