5

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

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

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

4

2 回答 2

6

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

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

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

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

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

于 2012-11-21T22:31:34.947 回答
0

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

于 2012-11-21T22:33:55.247 回答