代码之家  ›  专栏  ›  技术社区  ›  n3rd

在弹出窗口上触发事件(ExtJS)

  •  0
  • n3rd  · 技术社区  · 15 年前

    我们目前正在开发一个广泛使用弹出窗口(*)的应用程序,并且在IE上遇到了一个问题(据报道) before 但我找不到任何解决办法)。

    问题是:我们的主窗口 打开一个弹出窗口 并保留了一个引用。 然后在中的对象上注册事件处理程序 . 当事件触发时,IE8爆炸并显示以下错误消息:

    JScript object expected
    ext-all-debug.js (Line 1735, Char 17)
    Code: 0
    

    EXTUTIL.Event.prototype

    minimal example 这就产生了这种行为。

    感谢您的帮助。

    (*)是的,这是有充分理由的。没有,外景窗不是一个选择。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    至少我拿到了风滚草徽章。:-)

    Ext不能安全地跨窗口使用。每个窗口都应该有自己的Ext实例,两个窗口之间的通信只能使用基本数据类型(String、Number、Boolean、Date)完成。

    这意味着您不能在另一个窗口中注册事件处理程序,因为这意味着要将对象传递给另一个窗口。

    可以 跨浏览器窗口引用对象。你说什么 你要做的就是使用Ext事件系统。

    我使用的解决方法是,而不是在中注册事件处理程序 调用中的方法 然后在“本地”触发事件。当然,它不太优雅或灵活,但在所有浏览器中都能很好地工作。此外,我认为保持跨窗口沟通的简单和明确是一个很好的做法。如果您使用事件处理程序,您必须小心地跟踪发生的情况,例如,您需要确保在关闭窗口之前注销所有事件处理程序。