onload qui s'exécute plusieurs fois
Cette fois ci, mon problème, c'est que ma fonction d'initialisation s'exécute plusieurs fois.
Mise en situation
Voilà une illustration de mon problème :

Sur mon window, j'ai une fonction d'initialisation. Il y a un browser dedans, et lorsque je change son contenu, ça exécute le onload du window.
J'ai mis du temps à trouver que c'était le rechargement du browser qui déclenchait l'événement.
Explication
Après investigation, je suis tombé sur un post sur xulfr qui me permet de trouver la solution, et en même temps comprendre le pourquoi du comment.
En fait, l'événement onload se propage, je n'y avais pas pensé du tout, c'est un peu nouveau pour moi, je l'ai découvert grâce à un billet de liguorien (d'ailleurs, je t'ai piqué ton illustration :) ).
Solution
Il faut stopper la propagation de l'événement, vérifier la cible ou la capturer avant, c'est comme vous voulez.
Stopper l'événement
Là c'est simple, l'événement onload s'arrête au browser.
<browser onload="event.stopPropagation();" />
Vérifier la cible
Ici, on agit pendant le onload du window en vérifiant si la cible est bien le document.
<window onload="if (event.target == document) init();">
Je rappelle l'excellent billet de liguorien qui explique la propagation des événements.
Commentaires
1. Le jeudi, septembre 21 2006, 13:07 par ekameleon
Oui on voit ici tout l'intérêt du capturing et du bubbling du système événementiel du W3C DOM2/3 (comme en AS3), c'est vrai que l'utilisation via les balises cela change de l'utilisation directe des événements dans du code ECMAScript mais le principe reste le même :)
Merci pour ce petit article en tout cas très intéressant :)
EKA+ :)
2. Le mardi, octobre 10 2006, 03:48 par liguorien
au voleur ! au voleur ! :P
(ça ne me dérange pas du tout)