【问题标题】:Why does jQuery fire the ready event asynchronously为什么jQuery异步触发就绪事件
【发布时间】:2012-11-22 07:11:38
【问题描述】:

在 jQuery 就绪事件逻辑中:

// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if ( document.readyState === "complete" ) {
    // Handle it asynchronously to allow scripts the opportunity to delay ready
    return setTimeout( jQuery.ready, 1 );
}

您能否解释一下评论:“异步处理以允许脚本有机会延迟准备好”。

我不明白什么脚本以及为什么要延迟准备好

【问题讨论】:

  • 我多次问过自己同样的问题。
  • 我也很感兴趣
  • 看来这和IE有关我们来到这里是因为oldIE中的readyState === "complete" 足以让我们调用dom ready! @ 987654321@
  • @undefined,找到答案了。

标签: jquery domready


【解决方案1】:

如果准备好的回调(触发readyList)会立即触发,一旦DOM 准备好holdReady 函数,您就无法阻止它的执行。

jQuery.holdReady( hold )
描述:持有或释放jQuery的ready事件的执行。

$.holdReady() 方法允许调用者延迟 jQuery 的就绪事件。

动态脚本加载器通常会使用此高级功能,即使 DOM 可能已准备好,也希望在允许 ready 事件发生之前加载额外的 JavaScript(例如 jQuery 插件)。

此方法必须在文档的早期调用,例如在 jQuery 脚本标记之后。在 ready 事件已经触发后调用此方法将无效。

【讨论】:

【解决方案2】:

它与$.holdReady() 有关,它允许您延迟就绪事件。一个用例可能是您想在所有其他脚本运行之前做一些初始化工作。您可以延迟准备好,直到您完成初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多