Вопрос

Из метода 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top