Bonjour à tous,
J'ai mis en place un petit menu déroulant super simple :
un lien avec un onmouseover/out qui appelle une fonction pour afficher/cacher une div (mon déroulant) ... tout bête quoi !
Voici le code, vous comprendrez mieux :
d'abord le menu
ensuite le javascript showhide()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <a href="nos-prestations.php" onmouseover="showhide('show');" onmouseout="showhide('hide');" class="liens_vide_blanc"> <img src="images/puce_menu_blanc.png" alt="presta-on" id="presta" name="presta" border="0" /> NOS PRESTATIONS <div id="smenu" class="smenu" onmouseover="showhide('show');" onmouseout="showhide('hide');"> <a href="nos-prestations-constructions-metalliques.php" class="lien_presta">Constructions métalliques</a><br /> <a href="nos-prestations-serrurrerie.php" class="lien_presta">Serrurrerie</a> </div> </a>
enfin le CSS du sous-menu .smenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function showhide(option) { if(option == "show") { MM_swapImage('presta','','images/puce_menu_vert.png',1); document.getElementById('smenu').style.display = "block"; } else { MM_swapImgRestore(); document.getElementById('smenu').style.display = "none"; } }
J'ai fais exprès de faire en sorte que la div passe sur le lien texte pour que ce soit le onmouseout de la div qui déclenche le "caché" du menu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 .smenu { position: absolute; top: 28px; left: 0px; padding-left: 143px; width: 160px; display: none; z-index: 2; }
Cette technique fonctionne super bien sur FF mais pas sur IE (6, 7 et 8 ... je parle même plus du 5.5 !!!).
Sur IE8, si je mets (comme c'est le cas) onmouseout="showhide('hide');" dans la balise <a> qui englobe le tout, dès que je sors du mot PRESTATIONS, le sous-menu disparait alors que je suis censé être sur la div et donc avoir déclenché l'apparition du sous-menu, donc il ne devrait pas disparaitre.
Et si j'enlève le onmouseout="showhide('hide');" précédemment cité, ça ne disparait plus du tout, à moins de passer sur un des liens du sous-menu.
En gros, IE réagit comme si le curseur n'était pas sur la div.
Quelqu'un voit-il une erreur dans mon code ou une solution à mon problème svp ?
Merci d'avance
Partager