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?
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 }
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]-->
Thickbox utilise
if(typeof document.body.style.maxHeight === "undefined") {
alert('ie6');
} else {
alert('other');
}
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.
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';
}
?>
J'utiliserais n'importe quoi: hover - http://www.xs4all.nl/~peterned/csshover.html
Il utilise le comportement et fonctionne bien pour moi.
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