Mais tu remplaces rien du tout.
Un event, c'est un event.
Un handler, c'est un handler.
Tu peux demander à inhiber un event (impossible sans handler personnalisé sans modifier la source de l'origine de l'évènement), lui affecter un handler particulier, mais en aucun cas remplacer un event par un handler, ça veut purement rien dire.
Faut voir un event comme une exception.
Ca marche exactement de la même façon :
=> T'as un truc particulier qui se produit, pof "raise onclickEvent".
Ensuite le système va chercher quels sont les handler associés à l'évènement, puis les déclencher un à un, en suivant les règles habituelle (bouillonnement ou autre).
Quand tu gères une exeception, tu fais :
Code :
try { truc qui plante; } catch (typeException e) { fait un truc; } catch (generalException e) { fait un truc si e n'était pas de type "typeException"; } finaly { on a eu chaud aux fesses mais c'est passé; }
|
Jamais tu vas faire :
Code :
truc qui plante; if (e == typeException) { fait un truc; } else if (e == generalException) { fait un truc si e n'était pas de type "typeException"; } on a eu chaud aux fesses mais c'est passé;
|
On mélange pas les torchons et les serviettes.
JS propose une syntaxe particulièrement merdique pour gérer les évènement, c'est encore pire qu'en VB.
Si tu veux remplacer tous les handlers d'un évènement par un nouveau (ce que ne fais pas le =, puisqu'il n'override rien du tout, la preuve, on doit annuler l'évent manuellement si on ne veux pas que le handler système soit lancé à la fin), il faudrait utiliser un myEvent.clearHandlers(); si cette fonction existait. Lui coller = null par exemple ça fait que dalle
Message édité par MagicBuzz le 14-09-2007 à 15:10:42