【问题标题】:Why in Xul's XBL I can't call a method from window.opener?为什么在 Xul 的 XBL 中我不能从 window.opener 调用方法?
【发布时间】:2010-12-10 20:39:36
【问题描述】:

我有一个 XBL 方法:

        <method name="getValue">
            <body>
                <![CDATA[
                    return "TEST"
                ]]>
            </body>
        </method>

然后,在一个新打开的窗口中,我调用:

print(window.opener.getChannel()); // this prints the value

但它说

window.opener.getChannel 不是一个 功能

为什么?

【问题讨论】:

    标签: javascript xul xbl


    【解决方案1】:

    对于window.opener MDN 文档说:

    Returns a reference to the window that opened this current window.
    

    除非您的 XBL 正在扩展该窗口,否则您将没有该方法,并且我不确定您是否可以通过 XBL 以这种方式扩展窗口。我的意思是 - 如果你正在扩展 vbox 或者这样没关系,你可以做 getDocumentById 然后调用那个对象上的方法,但是你如何用 window 做呢?

    【讨论】:

    • 还是很奇怪,如果那个窗口有方法,并且引用指向它,我应该可以调用方法。
    • 您是否为窗口创建/分配了该功能?
    • 顺便说一句,我仍然看不到您在哪里打开新窗口,您是否从浏览器窗口(从覆盖)打开它以及您在哪里调用 print(window.opener.getChannel()) - 在 XBL 中?
    • 很久了,但我现在回到这个问题上。我刚刚意识到,如果将我的功能分配给我的窗口,例如window.my=function,我可以从另一个窗口的开启器中使用它。但如果我尝试使用定义为 XBL 方法的方法,则不会。我停止使用 XBL,我在 js 文件中编写我的 js,看起来效果更好。
    猜你喜欢
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2022-10-04
    • 2011-12-09
    • 2013-07-09
    相关资源
    最近更新 更多