为什么jQuery异步触发ready事件

joh*_*nny 5 jquery domready

在jQuery ready事件逻辑中:

// 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 );
}
Run Code Online (Sandbox Code Playgroud)

你能解释一下这个评论:"异步处理它,让脚本有机会延迟准备".

我不明白什么脚本和为什么要推迟准备

gdo*_*ica 6

如果就绪回调(触发它readyList)会立即触发,那么一旦DOM准备好该holdReady函数,就无法执行它.

jQuery.holdReady( hold )
描述:保存或释放jQuery的ready事件的执行.

$ .holdReady()方法允许调用延迟jQuery的ready事件.

这个高级功能通常由动态脚本加载器使用,它希望在允许就绪事件发生之前加载其他JavaScript(如jQuery插件),即使DOM可能已准备就绪.

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