Qooxdoo在窗口准备好了

时间:2012-02-25 14:40:43

标签: qooxdoo

我只是在qooxdoo应用程序准备好之后尝试触发一个事件,所以我开始使用“Hello World”应用程序并在主要功能的最后添加了建议:

 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");
  }
}

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

谢谢!

3 个答案:

答案 0 :(得分:1)

您是否从"From jquery to qooxdoo"文档中获得了“推荐”?! (如果你引用你的消息来源总是有帮助的。)

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

在您的第二个代码示例中,您没有收听事件,而是使用 isApplicationReady()检查状态。在将应用程序从非就绪状态转为就绪状态的事件已经过去之后,此状态可以很久返回。

答案 1 :(得分:0)

简单地覆盖Application

的成员区域中的finalize函数
finalize : function()
{
    // Call super class
    this.base(arguments);
    alert("Hello World");
}

答案 2 :(得分:0)

更简单!!!

QX核心窗口小部件的“出现”事件与“ onReady”事件相同,例如在其他JS框架(如YUI,JQuery或其他)中。...

http://www.qooxdoo.org/5.0.2/api/#qx.ui.core.Widget~appear!event

具有相同的效果。

最好,驯服