2012-02-25 40 views
2

我只是想后的Qooxdoo应用程序准备触发一个事件,所以我就开始用“Hello World”的应用程序和附加的建议在main函数的末尾:的Qooxdoo在窗口准备

main : function(){ 
     // Hello World part... 

    qx.event.Registration.addListener(window, "ready", function() { alert("application ready"); }); 
} 

但是,它似乎没有在Chrome或Firefox中触发(我没有测试IE),所以我挖了一些,发现这个,它的工作。

if (qx && qx.event && qx.event.Registration) 
{ 
    var manager = qx.event.Registration.getManager(window); 
    var handler = manager.findHandler(window, "ready"); 

    if (handler.isApplicationReady()) { 
    alert("application ready"); 
    } 
} 

任何人都可以告诉我为什么推荐的方法不起作用,或者我把它放在错误的地方?

谢谢!

回答

1

您是否从"From jquery to qooxdoo"文档获得“建议”? (如果你引用你的来源,它总是有帮助的)。

我认为你在这里混合的东西。首先,“窗口就绪”与“应用程序就绪”不同。我认为“窗口就绪”(如链接手册页所示)是全局JS窗口对象的低级事件。如果您运行的是高级别qooxdoo应用程序(因为它出现),当您在主要的方法中注册时,此事件早已过去。所以事件处理程序永远不会运行。

在你的第二个代码示例,你不听为事件,但检查状态isApplicationReady()。在将应用程序从未准备就绪状态转为准备就绪状态后,此状态可能会很长时间返回。

+0

是的会员区的最终化功能,也就是在那里我找到了参考。我会记得下一次加入。好的,你的解释是有道理的。我没有意识到,qooxdoo在窗口准备好事件之后进入。那么,在所有qooxdoo运行之后,isApplicationReady()是否会激活?我基本上希望在qooxdoo准备就绪并加载完毕后发射事件。 – Jonathan 2012-02-28 17:43:11

+0

再次,* isApplicationReady *是**不是**事件触发,而是状态检查。至于你的问题,这真的取决于你的意思是“qooxdoo已准备就绪并已加载”。窗口上有“准备就绪”事件,但正如您所看到的,在您的任何自定义代码运行之前它会被触发。 - 这项活动需要什么?当您的main()代码运行时,您可以确定所有内容都已准备好并加载。如果您想将其发送给应用程序的其他部分,您可以发起自定义事件! – ThomasH 2012-02-29 18:04:58

0

覆盖只需在应用程序

finalize : function() 
{ 
    // Call super class 
    this.base(arguments); 
    alert("Hello World"); 
}