我正在查看用于跟踪domready事件的jQuery源代码,有一点我完全不理解。如果脚本是动态包含并异步加载怎么办?这样,在脚本加载时可能已经加载了文档。 jQuery检查的唯一地方是document.readyState。
如果我错了,请纠正我,但是最近才将这个属性引入Firefox?如果是这样 - 可能已经触发了DomContentLoaded事件(甚至可能是窗口的onLoad),并且在这种情况下无法在domready上实际调用代码。
答案 0 :(得分:3)
在当前版本的jQuery中,它都是使用“延迟”机制处理的。页面的准备就绪封装在Deferred对象中,函数只是添加到“done()”队列中。 Deferred API只记得页面是否准备就绪,因此在页面准备好之后将函数作为“就绪”处理程序传递将立即调用该函数。
然而,跟踪“准备好”实际发生的时间的代码非常折磨。