Problème de mouseout
Fermé
Rémi
-
17 juin 2009 à 11:39
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 17 juin 2009 à 17:16
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 17 juin 2009 à 17:16
3 réponses
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
17 juin 2009 à 11:51
17 juin 2009 à 11:51
Bjr
Sans le code comment veux-tu qu'on puisse te répondre ?
Sans le code comment veux-tu qu'on puisse te répondre ?
Flatbeat
Messages postés
30
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
7 février 2010
1
17 juin 2009 à 12:17
17 juin 2009 à 12:17
J'ai le même problème avec des images.
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
17 juin 2009 à 17:16
17 juin 2009 à 17:16
Oui c'est bien là le problème avec l'implémentation des événements dans les éléments DOM des pages html
On pourrait penser que lorsqu'on place un onMouseOut sur un élément (un div par ex) alors l'événement n'est déclenché uniquement lorsqu'on sort de cet élément et pas quand on entre dans un des éléments enfant lui appartenant.
Hé bien non !
J'ignore qui est l'abrutit qui a une cette "idée" mais ça marche bel et bien comme ça :-( A part compliquer les choses je n'ai jamais trouvé une utilisation pratique à ce mode de fonctionnement. C'est anti-naturel au possible : c'est comme si on entrait dans un salon et considéré qu'on en sort dès qu'on marche sur le tapis !
Débile mais il faut faire avec ! T'Oh !
Tel que tu as implémenté tes gestionnaires d'événement (de façon inline) tu ne peux pas te rendre compte de l'étendu des dégâts : voici un ex en utilisant le modèle traditionnel d'implémentation des gestionnaires d'événement
Déplace la souris dans la zone noire du div et sur la zone verte contenant la liste et regarde tous les événements non souhaités qui se produisent !
Et encore je n'ai implémenté que le onMouseOut ! Même bordel avec onMouseOver tu imagines ?
Une solution possible dans mon prochain post ...
On pourrait penser que lorsqu'on place un onMouseOut sur un élément (un div par ex) alors l'événement n'est déclenché uniquement lorsqu'on sort de cet élément et pas quand on entre dans un des éléments enfant lui appartenant.
Hé bien non !
J'ignore qui est l'abrutit qui a une cette "idée" mais ça marche bel et bien comme ça :-( A part compliquer les choses je n'ai jamais trouvé une utilisation pratique à ce mode de fonctionnement. C'est anti-naturel au possible : c'est comme si on entrait dans un salon et considéré qu'on en sort dès qu'on marche sur le tapis !
Débile mais il faut faire avec ! T'Oh !
Tel que tu as implémenté tes gestionnaires d'événement (de façon inline) tu ne peux pas te rendre compte de l'étendu des dégâts : voici un ex en utilisant le modèle traditionnel d'implémentation des gestionnaires d'événement
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Test OnMouseOut</title> <meta http-equiv="Content-Language" content="fr" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> body { font-size : 10pt; font-family : arial; } .liensmenu ul { background-color:#00DD00; } #div_guide { border-style : solid; border-color : #ff0000; border-width:2px; position:absolute; width:150px; height:400px; top:10px; left:10px; text-align:left; background-color:#161616; } #div_debug { position : relative; left:210px; } </style> <script type="text/javascript"> function onMouseOutGuide(e) { if (!e) var e = window.event var source = e.target || e.srcElement; var dest = e.relatedTarget || e.toElement; var elt = document.getElementById("debug"); elt.value +="source.id="+source.id+' source.nodeName='+source.nodeName+" -> dest.nodeName="+dest.nodeName+"\n"; } function start() { document.getElementById("debug").value=""; var elt = document.getElementById("div_guide"); elt.onmouseout=onMouseOutGuide; } window.onload=start; </script> </head> <body> <div class="liensmenu" id="div_guide"> <ul class="lienmenu"> <li><a href="#">Class Guide</a></li> <li><a href="#">XP Guide</a></li> <li><a href="#">Mini-Games Guide</a></li> </ul> </div> <div id="div_debug"> Debug<br /> <textarea cols="70" rows="30" id="debug"></textarea> </div> </body> </html>
Déplace la souris dans la zone noire du div et sur la zone verte contenant la liste et regarde tous les événements non souhaités qui se produisent !
Et encore je n'ai implémenté que le onMouseOut ! Même bordel avec onMouseOver tu imagines ?
Une solution possible dans mon prochain post ...
17 juin 2009 à 12:18
le CSS:
Et le Javascript pour placer le sous-menu :
Voilà :/