Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# onLoad, Event Listener et Frames

Envoyé par : Vilya

Date : 25/04/2006 20:09

Bonsoir,

J'ai actuellement un problème relativement bloquant sur le développement d'une petite application xul perso.

En deux mots ? Je rajoute via un overlay un EventListener load sur la fenêtre qui appelle une fonction myFunction quelconque pour cet exemple (typiquement un bête alert("coucou") suffit).

<script type="application/x-javascript">
      window.addEventListener("load",myFunction,true);
</script>

Tout fonctionne correctement sur une page simple normale, l'événement est capté et ma fonction le traite. Mais en revanche, si la page est composée de frames ou autres joyeusetés du genre, l'événement est capté autant de fois supplémentaires. Vous comprendrez que pour une fonction modifiant l'interface c'est désagréable.

Après avoir passé la journée dessus et m'être renseignée (notemment ici : http://xulfr.org/forums/read.php?1,2884) sans trouver de réponse convainquante j'ouvre un nouveau sujet.

Concrètement :

  • Est-ce un comportement normal ?
  • Comment s'en sortir de la façon la plus propre possible ? J'en imagine plein mais je n'ai pas envie de taper dans la bidouille :-) Si vous avez rencontré ce problème ou si vous avez des idées, je suis preneuse.

Merci d'avance,

Vilya

# Re: onLoad, Event Listener et Frames

Envoyé par : hhf

Date : 25/04/2006 23:49

j'avais remarqué la même chose, alors de memoire (je regarderais demains), il me semble que j'avais testé si event existé. Soit :

 <window title="main" xmlns:html="..." xmlns="...xul" onload="main.init(event);"/>
   <script>
      const main = {
          init : function(event) {
              if(event!=null) {
              }
          }
      }
   </script>
 </window>

Voila il me semble que ca ca marche en tous ca je me souviens que je teste quelque chose sur le 'event'. si c'est pas event, c'est peut etre event.target. Je me rapelle plus trop. Tiens nous au courant.

# Re: onLoad, Event Listener et Frames

Envoyé par : laurentj

Date : 26/04/2006 10:11

c'est un bug (ou feature, comme tu voudras) connu de firefox. L'evenement "load" des fenêtres des iframes se propage sur les fenêtres parentes. Donc ta fenêtre principal reçoit tout les évènements load de tes iframes.

Un moyen c'est de verifier je pense (à tester), dans ton handler, si la propriété originalTarget de l'évènement designe bien ta fenêtre (et non l'une des frames). voir eventuellement les autres propriétés *target.

Tu peux aussi de mettre un boolean dans une variable. tu la met à true des que ton handler s'est executé, et tu test en debut de ton handler si elle est à true ou false, et donc executer ou non le code... C'est pas sexy mais bon...

# Re: onLoad, Event Listener et Frames

Envoyé par : Vilya

Date : 26/04/2006 10:23

laurentj a écrit:

Tu peux aussi de mettre un boolean dans une
variable. tu la met à true des que ton handler
s'est executé, et tu test en debut de ton handler
si elle est à true ou false, et donc executer ou
non le code... C'est pas sexy mais bon...

Pour l'instant je m'en sors grosso modo de cette façon mais je n'aime pas trop le principe :( Je continue de fouiller et je vous tiens au courant si j'arrive à quelque chose de concluant.

En attendant si vous avez une idée de génie, n'hésitez pas ^^

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.