从XBL调用方法

时间:2010-12-21 13:01:17

标签: xul xbl

从XBL方法来看,当我需要调用另一种方法时,我喜欢:

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


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

我想知道是否有办法调用本地方法而不需要元素ID?我已经尝试了this.myMethod_1(),但它说该方法不存在。

2 个答案:

答案 0 :(得分:1)

在事件监听器的特定情况下,还有另一种解决问题的方法,那就是将元素本身作为监听器传递。当然你只得到一个handleEvent方法,所以如果你在很多不同的事件目标上听很多不同的事件,这个方法就不那么有用了。

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

答案 1 :(得分:0)

你能告诉我们调用myMethod_2的代码吗?如果你这样称它为:document.getElement(...)。myMethod_2(),那很好,但如果你有像someElement.addEventHandler(“click”,myxbl.myMethod_2,...)这样的东西;这将无效,因为事件目标将是 this

这对于确定该上下文中 this 的内容非常重要

编辑:(汤姆的回复)

ow,我觉得我明白了......这正是问题所在......我是从另一个文件的按键监听器中调用它的,而“这个”并不是我想的......