Bonjour,
Voilà, sur un petit système de div-popup, je veux proposer dans la méthode qui créé la popup de mettre en parametre une fonction callback qui sera exécutée à la fermeture de ce popup (div).
Dans les fait, le MkPopup, c'est du document.createElement('div') de la div principale plus une petite croix à droite pour fermer la popup, et une div qui contient le contenu a proprement parler (c'est cet sous div qui est retournée par MkPopup d'ailleurs).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function RequestHTMLPopup(param, close_callback) { popup = MkPopup(); // fonction qui construit dynamiquement le DIV popup.innerHTML = AjaxHTML(param); popup.parentNode.addEventListener('DOMNodeRemoved', close_callback, false); }
on a un gros
MkPopup retourne la DIV abritant le contenu, et pour la petite croix de fermeture de la page, j'ai définis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <DIV> <DIV>petite croix clozdiv</DIV> <DIV>contenu</DIV> </DIV>
De cette façon, quand je détruit ma popup, ça lache un evenement DOMNodeRemoved, et le callback de fermeture est appelé. Notez que ce callback ne doit en aucun cas contenir du code relatif à la gestion de la popup, comme par exemple un stopPropagation().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 clozdiv.onclick = function(e) { window.document.body.removeChild(this.parentNode); };
Bref, tout ça marche pas mal, jusqu'au moment où dans la div de contenu, je doive manipuler mes objets. Genre un simple obj.innerHTML =... semble propager un DOMNodeRemoved (probablement due à la suppression de ce qu'il y avait deja dans l'objet) qui remonte jusqu'au DIV de la popup, et donc déclanche l'execution du callback.
Auriez vous une solution pour que le mon eventlistener ne réagisse uniquement qu'à l’événement DOMNodeRemoved le concernant lui, et non ceux venant de ses fils ?
En vous remerciant
Partager