Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Ajouter des nouveaux événements aux fenêtres

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

# Re: Ajouter des nouveaux événements aux fenêtres

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..

# Re: Ajouter des nouveaux événements aux fenêtres

Envoyé par : woogluf

Date : 24/02/2006 22:33

Merci pour l'info, je vais tester.

# Re: Ajouter des nouveaux événements aux fenêtres

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.

# Re: Ajouter des nouveaux événements aux fenêtres

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

# Re: Ajouter des nouveaux événements aux fenêtres

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)

# Re: Ajouter des nouveaux événements aux fenêtres

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) {

      }
   }
 }

# Re: Ajouter des nouveaux événements aux fenêtres

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.