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.
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>