| Summary: Gestionnaires d'événements |
| Author: Maxence Delannoy |
| Published: 29/07/2007 |
| Ext Version: 1.1 |
Languages: English Chinese French
|
En Javascript, les événements (incluant les actions de l'utilisateur comme les mouvements de souris, les frappes clavier ou les réponses à des requêtes Ajax) peuvent survenir à n'importe quel moment.
Pour répondre à ces événements et lancer l'action liée, nous devons fournir un gestionnaire d'événement. La plupart des objets fournissent une méthode nommée on qui permet d'ajouter un gestionnaire d'événement. Le premier paramètre correspond au type d'évenement qu'on souhaite intercepter ("click" par exemple pour les clics de souris). Le deuxième paramètre permet de spécifier la fonction qui sera appelée lorsque l'événement surviendra. Le nom de la fonction est écrite comme une simple référence de fonction (un nom de fonction sans parenthèses). Si on mets les parenthèses, Javascript l'interprète comme un appel de fonction.
Il est important de noter que la variable magique this d'une référence de fonction n'est pas définie par défaut. Si on veut que cette variable pointe vers un objet particulier, il faut le spécifier dans le troisième paramètre de la méthode on.
Dans les exemples suivants, myElement est une instance de la classe Ext.Element.
Correct :
myElement.on("click", myObject.clickHandler, myObject);
Incorrect :
myElement.on("click", myObject.clickHandler(), myObject);
La syntaxe précédente transmet le résultat de l'appel de la fonction clickHandler et non pas la référence à la fonction clickHandler à cause de la présence des parenthèses. Cette exemple peut être valable si la fonction clickHandler renvoit une référence de fonction, mais la plupart du temps ce n'est pas ce que vous comptiez faire.
Le simple fait que la méthode clickHandler soit un membre de l'objet myObject ne suffit pas à définir le contenu de la variable this. Il faut le spécifier explicitement en troisième paramètre. La méthode on vas alors utiliser les méthodes call ou apply de l'objet Function pour définir le contexte dans lequel sera appelé la méthode clickHandler
Pour passer des paramètres à un gestionnaire d'événement, il faut utiliser les méthodes de l'objet Function, c'est-à-dire :
myElement.on("click", myObject.clickHandler.createCallback("foo", {bar:"bletch"}), myObject);
Dans ce dernier exemple, deux paramètres, la chaîne de caractères "foo" et l'objet anonyme contenant la propriété "bar" initialisé à la valeur "bletch" seront passés au gestionnaire lorsque l'événement surviendra.