最近写页面的时候经常会遇到,在onload里面写的函数有的时候在页面加载完后不会执行到,经过研究发现了一些onload与$(document).ready()二者之间的区别与关联。
首先,两个都是在页面加载后会自动运行一段函数的方法。当一个文档完全下载到浏览器中时,会出发window.onload()事件,这意味着页面上的全部元素对JavaScript而言都是可以访问的,这种情况对编写功能性代码都非常有利,因为无需考虑文档加载的次序。
而通过$(document).ready()注册的事件处理程序,则会在DOM完全就需并可以使用时才被触发,虽然这也意味着所有元素都可以访问,但却不意味着所有关联的文件都已经下载完毕。换句话说,当HTML下载完成并解析成DOM树之后,代码就可以运行。
总的来说$(document).ready()是在DOM被解析后,图像和外部资源加载之前执行,而window.onload()是在全部完成后才执行。
他们之间还有一个区别就是window.onload函数一次只能保存对一个函数的引用,如:
window.onload = doone();
window.onload = dotwo();
对于这两行代码,最后只执行dotwo()函数,但$(document).ready()可以加多个函数依次执行。 $(document).ready也有一些简写方法:
$(document).ready(function(){}); <=> $().ready(function(){}); <=>$(function(){});