两者虽然具有类似的实现效果,但是在触发操作的时间上存在着微妙的差异,这种差异只有在要加载的资源多到一定程度才会体现出来。

window.onload

  • 当文档完全下载到浏览器中(包括图片等资源文件),会触发window.onload事件。这意味着页面上的所有元素对JavaScript而言都是可以操作的。
  • .onload属性一次只能保存对一个函数的引用,不能在现有的行为基础上再增加新行为。

$(document).ready()

  • $(document).ready()注册的事件处理程序,则会在DOM完全就绪并可以使用时调用,虽然也意味着所有元素对JavaScript而言都是可以访问的,但是,却并不意味着所有关联的文件都已经下载完毕。换句话说,当HTML下载完成并解析为DOM树之后,代码就可以运行,而不需要等待图片等资源下载完成才运行。
  • $(document).ready()每次被调用都会向内部的行为队列中添加一个新函数,当页面加载完成后,所有函数都会被执行,而且会按照函数注册的顺序依次执行。