Bonjour,
J'ai un gestionnaire d'évènement relativement simple qui ouvre et ferme un menu au clic sur un bouton. Jusque là tout va bien. Là où je bloque c'est que j'aimerais qu'une fois le menu ouvert, si l'utilisateur clique n'importe où dans la fenêtre du navigateur, le menu se ferme... ça paraît simple je sais mais je bloque.
J'ai essayé de mettre un second gestionnaire d'évènement sur la fenêtre du navigateur, d'abord imbriqué dans le premier gestionnaire qui gère le bouton, puis ensuite j'ai essayé de le placer à l'extérieur du premier gestionnaire... rien à faire.
Merci d'avance.
J'ai un gestionnaire d'évènement relativement simple qui ouvre et ferme un menu au clic sur un bouton. Jusque là tout va bien. Là où je bloque c'est que j'aimerais qu'une fois le menu ouvert, si l'utilisateur clique n'importe où dans la fenêtre du navigateur, le menu se ferme... ça paraît simple je sais mais je bloque.
J'ai essayé de mettre un second gestionnaire d'évènement sur la fenêtre du navigateur, d'abord imbriqué dans le premier gestionnaire qui gère le bouton, puis ensuite j'ai essayé de le placer à l'extérieur du premier gestionnaire... rien à faire.
/* On initialise une fonction pour ouvrir le menu. */
function OPENmenu() {
/* On ajoute la classe « MENUopened » au menu pour l'ouvrir. */
MENU.classList.add('MENUopened');
alert('Tu viens d\'ouvrir le menu !');
}
/* On initialise une fonction pour fermer le menu. */
function CLOSEmenu() {
/* On supprime la classe « MENUopened » du menu pour le fermer. */
MENU.classList.remove('MENUopened');
alert('Tu viens de fermer le menu !');
}
/* On initialise l'écoute sur le bouton du menu. */
BUTTONmenu.addEventListener(
/* On écoute l'évènement « click ». */
'click',
/* Si l'évènement se produit... */
function() {
/* Si le menu est fermé... */
if (MENU.className == 'MENUclosed') {
/* On utilise la fonction qui ouvre le menu. */
OPENmenu();
}
/* Sinon... */
else {
/* On utilise la fonction qui ferme le menu. */
CLOSEmenu();
}
},
/* On configure la captation de l'évènement sur la phase de capture. */
true
);
Merci d'avance.