Envoyé par : woogluf
Date : 23/02/2006 22:36
Bonjour,
J'ai deux fenêtres, une (window1) qui ouvre l'autre (window2), je voudrais que window1 soit prévenue lorsque window2 déclenche un événement de ma création 'onNonEvenement'.
Est-il possible de faire un truc du style :
var window2=window.open('...'); var monListener= { handleEvent : function(event) { /* faire des trucs */ }; } window2.addEventListener("onMonEvenement", monListener, false);
Et si oui, comment déclencher mon nouvel événement ?
Merci
Envoyé par : laurentj
Date : 24/02/2006 17:25
Oui ton truc fonctionnerait à priori.
Pour declencher l'evenement : document.createEvent("onMonEvenement");
note : les noms des évenements classique n'ont pas de prefixe "on". Ne pas confondre avec les attributs on* qui permettent de spécifier un handler sur un evènement precis..
Envoyé par : woogluf
Date : 24/02/2006 22:33
Merci pour l'info, je vais tester.
Envoyé par : woogluf
Date : 24/02/2006 23:13
C'était presque ça, voici du code qui fonctionne :
coté fenêtre en "attente" de l'événement (window1)
var nomListener= { handleEvent : function(event) { alert("ça marche"); } }; window2.addEventListener("nomEvenement", nomListener, false);
coté fenêtre qui envoie des événements (window2)
// ici ce n'est pas le nom de l'événement mais le type // On a a prioris de choix ent Event, UIEvent, MouseEvent, KeyEvent et MutationEvent var event=document.createEvent("Event"); event.initEvent("monEvenement",false,false); dispatchEvent(event);
Pour plus d'infos sur les événements DOM, il faut regarder ici
Par contre, je ne sais pas si la déclaration de nouveau événement est valide (et donc pérenne).
Et je ne sais pas non plus s'il y a un moyen d'attacher des données à l'événement.
Envoyé par : Paul Rouget
Date : 27/02/2006 16:49
Et je ne sais pas non plus s'il y a un moyen d'attacher des données à l'événement.
Non, on ne peut pas. Si tu veux passer des données, passe plutot par un observer (via le service nsIObserverService).
http://xulfr.org/wiki/RessourcesLibs/Observers
Envoyé par : laurentj
Date : 27/02/2006 17:13
Par contre, je ne sais pas si la déclaration de nouveau événement est valide (et donc pérenne).
si. par contre, pour eviter les "collisions" avec d'autres évènements, il est préférable que tu prefixe tes evenements (par le nom de l'appli, ou tes initiales, bref par un truc spécifique à ton appli)
Envoyé par : woogluf
Date : 28/02/2006 19:54
Non, on ne peut pas. Si tu veux passer des données, passe plutot par un observer (via le service nsIObserverService).
J'ai regardé un petit peu le fonctionnement des observers, si j'ai bien compris, ce système ne permet pas d' "observer" un objet précis.
Par exemple si j'avais deux objets obj1 et obj2 émettant des notifications "maNotification", il n'est pas possible de creer un observateur qui ne traiterait que les notifications en provenance de "obj1", sauf en ayant dans mon observateur du code qui verifie la provenance de la notification :
var myObserver = { observe : function ( subject , topic , data ){ if(topic == "maNotification") && (subject==obj1) { } } }
Envoyé par : laurentj
Date : 01/03/2006 10:33
woogluf : tout à fait. Le subject est là pour ça
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.