Domanda

Da un metodo XBL, quando ho bisogno di chiamare un altro metodo, mi piace:

        <method name="myMethod_1">
            <body>
                <![CDATA[
                    // do staff
                ]]>
            </body>
        </method>


        <method name="myMethod_2">
            <body>
                <![CDATA[
                    document.getElementById("thisElementID").myMethod_1();
                ]]>
            </body>
        </method>

Vorrei sapere se c'è un modo per chiamare il metodo locale senza necessità l'elemento id? Ho provato this.myMethod_1() ma si dice il metodo non esistono.

È stato utile?

Soluzione

ci può mostrare il codice chiama myMethod_2? Se si chiama come:. Document.getElement (...) myMethod_2 () va bene, ma se avete qualcosa come someElement.addEventHandler ( "click", myxbl.myMethod_2, ...); che non funzionano in quanto target dell'evento sarà questo .

Questo è importante per determinare ciò che è questo in quel contesto

Modifica (risposta di Tom)

ow, penso ho capito .. è proprio questo il problema .. Sto chiamando da un ascoltatore pressione del tasto di un altro documento, e il "questo" non era quello che penso ..

Altri suggerimenti

Nel caso specifico di un ascoltatore evento, c'è un altro modo per aggirare il problema, e che deve passare l'elemento stesso come l'ascoltatore. Naturalmente si ottiene solo un metodo handleEvent, quindi questo è meno utile se si sta ascoltando un sacco di diversi eventi in un sacco di diversi target di eventi.

<implementation implements="nsIDOMEventListener">
  <method name="handleEvent">
    <parameter name="aEvent"/>
    <body>
      <![CDATA[
        // do stuff
      ]]>
    </body>
  </method>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top