从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() 但是它说该方法不存在。

有帮助吗?

解决方案

您可以向我们展示调用myMethod_2的代码吗?如果您称其为:document.getElement(...)。mymethod_2(),那很好,但是如果您有somelement.addeventhandler之类的东西(“单击”,myxbl.mymethod_2,...);由于事件目标将是 这个.

这对于确定什么是重要的 这个 在这种情况下

编辑: (汤姆的答复)

哦,以为我明白了。这正是这个问题。.我是从另一个文档的按键听众来的,而“ this”不是我的想法。

其他提示

在事件侦听器的特定情况下,解决问题的另一种方法是将元素本身作为侦听器传递。当然,您只能获得一种句柄方法,因此,如果您在许多不同的事件目标上聆听许多不同的事件时,这将不太有用。

<implementation implements="nsIDOMEventListener">
  <method name="handleEvent">
    <parameter name="aEvent"/>
    <body>
      <![CDATA[
        // do stuff
      ]]>
    </body>
  </method>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top