为什么jQuery异步触发ready事件

时间:2012-11-21 22:18:33

标签: 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 );
}

你能否解释一下这句话:“异步处理它,让脚本有机会延迟准备”。

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

2 个答案:

答案 0 :(得分:6)

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

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

  

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

     

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

     

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

答案 1 :(得分:0)

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