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.

Était-ce utile?

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top