Question
A partir d'une méthode XBL, quand je dois appeler une autre méthode, je fais comme:
<method name="myMethod_1">
<body>
<![CDATA[
// do staff
]]>
</body>
</method>
<method name="myMethod_2">
<body>
<![CDATA[
document.getElementById("thisElementID").myMethod_1();
]]>
</body>
</method>
Je voudrais savoir s'il est un moyen d'appeler la méthode locale sans avoir besoin l'identifiant d'élément? J'ai essayé this.myMethod_1()
mais il dit la méthode n'existe pas.
La solution
Pouvez-vous nous montrer le code appelant myMethod_2? Si vous l'appelez comme:. Document.getElement (...) myMethod_2 () qui va bien, mais si vous avez quelque chose comme someElement.addEventHandler ( "clic", myxbl.myMethod_2, ...); qui ne fonctionnera pas car la cible de l'événement sera ce .
Ceci est important pour déterminer ce qui est ce dans ce contexte
EDIT: (réponse de Tom)
OW, pense que je l'ai eu .. c'est exactement ce problème .. Je l'appeler d'un auditeur keypress d'un autre document, et « ce » n'était pas ce que je pense ..
Autres conseils
Dans le cas spécifique d'un écouteur d'événement, il y a une autre façon de contourner le problème, et qui est de passer l'élément lui-même comme l'auditeur. Bien sûr, vous obtenez une seule méthode de handleEvent, c'est donc moins utile si vous écoutez beaucoup de différents événements sur beaucoup de différentes cibles d'événement.
<implementation implements="nsIDOMEventListener">
<method name="handleEvent">
<parameter name="aEvent"/>
<body>
<![CDATA[
// do stuff
]]>
</body>
</method>