开发者

Calling a method from XBL

开发者 https://www.devze.com 2023-01-31 20:06 出处:网络
From a XBL method, when I need to call another method, I do like: <method name=\"myMethod_1\"> <body>

From a XBL method, when I need to call another method, I do like:

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


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

I would like to know if is there a way to call the local method without need the element id? I've tried this.myMethod_1() but it says the me开发者_StackOverflow社区thod don't exist.


In the specific case of an event listener, there is another way around the problem, and that is to pass the element itself as the listener. Of course you only get one handleEvent method, so this is less useful if you're listening to lots of different events on lots of different event targets.

<implementation implements="nsIDOMEventListener">
  <method name="handleEvent">
    <parameter name="aEvent"/>
    <body>
      <![CDATA[
        // do stuff
      ]]>
    </body>
  </method>


can you show us code calling myMethod_2? If you call it like: document.getElement(...).myMethod_2() that's fine, but if you have something like someElement.addEventHandler("click", myxbl.myMethod_2,...); that won't work since event target will be this.

This is important for determining what is this in that context

EDIT: (Tom's reply)

ow, think I got it.. it's exactly this the problem.. I'm calling it from a keypress listener of another document, and the "this" was not what I think..

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号