【问题标题】:Qooxdoo on window readyQooxdoo 在窗口准备就绪
【发布时间】:2012-02-25 14:40:43
【问题描述】:

我只是想在 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");
  }
}

谁能告诉我为什么推荐的方法不起作用或者我把它放在了错误的地方?

谢谢!

【问题讨论】:

    标签: qooxdoo


    【解决方案1】:

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

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

    在您的第二个代码示例中,您不是在侦听 事件,而是使用 isApplicationReady() 检查 状态。此状态可以在将应用从未就绪变为就绪的事件过去很长时间后返回 true。

    【讨论】:

    • 是的,这就是我找到参考的地方。下次我会记得包括在内。好的,你的解释很有道理。我没有意识到 qooxdoo 是在 window ready 事件之后出现的。那么,在所有 qooxdoo 运行后是否会触发 isApplicationReady() ?我基本上希望在 qooxdoo 准备好并加载后触发一个事件。
    • 同样,isApplicationReady 不是事件触发,而是状态检查。至于您的问题,这实际上取决于您对“qooxdoo 已准备好并已加载”的意思。窗口上有“就绪”事件,但正如您所见,它在您的任何自定义代码运行之前被触发。 - 想要这个活动做什么?当您的 main() 代码运行时,您可以确定一切都已准备就绪并已加载。如果您想向应用程序的其他部分发出信号,您可以触发自定义事件!?
    【解决方案2】:

    简单地覆盖应用程序成员区域中的 finalize 函数

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

    【讨论】:

      【解决方案3】:

      更简单!!!

      QX Core Widget“出现”事件与其他 JS 框架(如 YUI、JQuery 等)中的“onReady”事件相同......

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

      具有相同的效果。

      最好的,驯服者

      【讨论】:

        猜你喜欢
        • 2012-02-15
        • 1970-01-01
        • 2019-10-09
        • 2017-07-05
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多