Bonjour, j'ai une petite question sur la gestion des événements avec
JavaScript.
Dans une page HTML, j'ai un élément qui en contient un autre, chacun
avec un événement onClick. Mettons pour fixer les idées un <div> qui
contient un paragraphe <p> :
Mes premiers tests sur Firefox montrent que f1() et f2() sont appelées
toutes les deux lorsque je clique dans le paragraphe, d'abord f2() puis
f1().
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on
passe par f2(). J'ai essayé de rajouter « return false; » comme lorsque
l'on veut empêcher de suivre le lien d'une ancre, mais ça ne semble pas
marcher (ou alors je me suis planté quelque part).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bobe
Olivier Miakinen nous a dit le 28.07.2005 00:49:
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on passe par f2(). J'ai essayé de rajouter « return false; » comme lorsque l'on veut empêcher de suivre le lien d'une ancre, mais ça ne semble pas marcher (ou alors je me suis planté quelque part).
Oui, c'est le principe de bouillonnement des évènements. Ajoute l'instruction suivante dans ta fonction f2():
e.stopPropagation();
"e" étant l'objet d'évènement que tu reçois en argument de la fonction f2().
Pour IE: window.event.cancelBubble = true;
-- Aurélien Maille
"la vie d'un geek est un combat perpétuel contre l'imperfection"
Olivier Miakinen nous a dit le 28.07.2005 00:49:
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on
passe par f2(). J'ai essayé de rajouter « return false; » comme lorsque
l'on veut empêcher de suivre le lien d'une ancre, mais ça ne semble pas
marcher (ou alors je me suis planté quelque part).
Oui, c'est le principe de bouillonnement des évènements.
Ajoute l'instruction suivante dans ta fonction f2():
e.stopPropagation();
"e" étant l'objet d'évènement que tu reçois en argument de la fonction f2().
Pour IE: window.event.cancelBubble = true;
--
Aurélien Maille
"la vie d'un geek est un combat perpétuel contre l'imperfection"
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on passe par f2(). J'ai essayé de rajouter « return false; » comme lorsque l'on veut empêcher de suivre le lien d'une ancre, mais ça ne semble pas marcher (ou alors je me suis planté quelque part).
Oui, c'est le principe de bouillonnement des évènements. Ajoute l'instruction suivante dans ta fonction f2():
e.stopPropagation();
"e" étant l'objet d'évènement que tu reçois en argument de la fonction f2().
Pour IE: window.event.cancelBubble = true;
-- Aurélien Maille
"la vie d'un geek est un combat perpétuel contre l'imperfection"
Olivier Miakinen
Le 28/07/2005 01:07, Bobe m'a répondu :
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on passe par f2(). [...]
e.stopPropagation();
"e" étant l'objet d'évènement que tu reçois en argument de la fonction f2().
Pour info, ça n'a pas fonctionné tout de suite parce qu'il me manquait un tout petit truc, qui était de placer la définition de l'attribut onClick dans la partie JavaScript plutôt que dans le code HTML, afin de lui passer un nom de fonction plutôt qu'un appel de fonction.
En clair, remplacer : (HTML) <p onClick='f2()'> par : (JS) node.onClick = f2;
Mais grâce au mot-clé « stopPropagation » que tu m'as donné et que je ne pouvais pas inventer, j'ai vite trouvé l'info sur la toile, plus exactement sur <http://javascript.developpez.com>.
Pour IE: window.event.cancelBubble = true;
Ça marche finement. Encore merci à toi.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
Le 28/07/2005 01:07, Bobe m'a répondu :
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on
passe par f2(). [...]
e.stopPropagation();
"e" étant l'objet d'évènement que tu reçois en argument de la fonction f2().
Pour info, ça n'a pas fonctionné tout de suite parce qu'il me manquait
un tout petit truc, qui était de placer la définition de l'attribut
onClick dans la partie JavaScript plutôt que dans le code HTML, afin de
lui passer un nom de fonction plutôt qu'un appel de fonction.
En clair, remplacer :
(HTML) <p onClick='f2()'>
par :
(JS) node.onClick = f2;
Mais grâce au mot-clé « stopPropagation » que tu m'as donné et que
je ne pouvais pas inventer, j'ai vite trouvé l'info sur la toile,
plus exactement sur <http://javascript.developpez.com>.
Pour IE: window.event.cancelBubble = true;
Ça marche finement. Encore merci à toi.
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Je voudrais savoir s'il est possible d'empêcher l'appel à f1() quand on passe par f2(). [...]
e.stopPropagation();
"e" étant l'objet d'évènement que tu reçois en argument de la fonction f2().
Pour info, ça n'a pas fonctionné tout de suite parce qu'il me manquait un tout petit truc, qui était de placer la définition de l'attribut onClick dans la partie JavaScript plutôt que dans le code HTML, afin de lui passer un nom de fonction plutôt qu'un appel de fonction.
En clair, remplacer : (HTML) <p onClick='f2()'> par : (JS) node.onClick = f2;
Mais grâce au mot-clé « stopPropagation » que tu m'as donné et que je ne pouvais pas inventer, j'ai vite trouvé l'info sur la toile, plus exactement sur <http://javascript.developpez.com>.
Pour IE: window.event.cancelBubble = true;
Ça marche finement. Encore merci à toi.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
Bobe
Olivier Miakinen nous a dit le 28.07.2005 15:35:
En clair, remplacer : (HTML) <p onClick='f2()'> par : (JS) node.onClick = f2;
Oui, c'est mieux d'ajouter les guetteurs d'évènement dans le code javascript plutôt que de les mettre dans la structure html.
Sinon, pour info, c'est faisable comme ça:
<p onClick='f2(event)'>
-- Aurélien Maille
"la vie d'un geek est un combat perpétuel contre l'imperfection"
Olivier Miakinen nous a dit le 28.07.2005 15:35:
En clair, remplacer :
(HTML) <p onClick='f2()'>
par :
(JS) node.onClick = f2;
Oui, c'est mieux d'ajouter les guetteurs d'évènement dans le code
javascript plutôt que de les mettre dans la structure html.
Sinon, pour info, c'est faisable comme ça:
<p onClick='f2(event)'>
--
Aurélien Maille
"la vie d'un geek est un combat perpétuel contre l'imperfection"