Вопрос
Из метода XBL, когда мне нужно вызвать другой метод, мне нравится:
<method name="myMethod_1">
<body>
<![CDATA[
// do staff
]]>
</body>
</method>
<method name="myMethod_2">
<body>
<![CDATA[
document.getElementById("thisElementID").myMethod_1();
]]>
</body>
</method>
Я хотел бы знать, есть ли способ вызвать локальный метод без необходимости идентификатора элемента? я пытался this.myMethod_1()
Но он говорит, что метода не существует.
Решение
Можете ли вы показать нам код, вызывая mymethod_2? Если вы называете это как: document.getElement (...). Mymethod_2 (), это нормально, но если у вас есть что -то вроде comeelement.addeventhandler («Щелкни», myxbl.mymethod_2, ...); это не сработает, так как цель событий будет это.
Это важно для определения того, что это в этом контексте
РЕДАКТИРОВАТЬ: (Ответ Тома)
Ой, думаю, я понял ... это именно эта проблема ... Я называю это от слушателя Keypress другого документа, и «это» не было тем, что я думаю ..
Другие советы
В конкретном случае слушателя событий есть и другой способ обойти проблему, и это должно передавать сам элемент в качестве слушателя. Конечно, вы получаете только один метод ручки, так что это менее полезно, если вы слушаете множество различных событий на множестве различных целей событий.
<implementation implements="nsIDOMEventListener">
<method name="handleEvent">
<parameter name="aEvent"/>
<body>
<![CDATA[
// do stuff
]]>
</body>
</method>