首先它们都是在页面全部元素(包括html标签以及引用到得全部图片,Flash等媒体)加载完毕后执行的,这是它们的共同点.javascript
不用body.Onload()理由1:html
若是咱们想同时加载多个函数,咱们必须这样写java
<body onload="fn1(),fn2()"></body>看起来极其丑陋,若是用$(window).load()咱们能够这样加载多个函数web
$(window).load(function() {
alert("hello,我是jQuery!");
});
$(window).load(function() {
alert("hello,我也是jQuery");
});dom
这样写它会从上往下执行这两个函数,而且看起来漂亮多了.函数
不用body.Onload()理由2:post
用body.Onload()不可以作到js和html彻底分离,这是一个很严重的问题.url
另外用$(window).load(function(){...})和body.onload()都存在一样一个问题,由于开始也说到了,它们都须要等到页面的全部内容spa
加载完毕才执行,可是若是当网速比较慢的时候,加载一个页面每每须要较长的时间(几秒到十几秒不等,甚至更长...),因此咱们常常orm
会遇到页面尚未彻底加载完毕而用户已经在操做页面了这种状况,这样页面表现出来的效果就跟咱们预期的效果不同了,
因此在这里我推荐使用$(document).ready(function(){}),或简写为$(function(){}),由于他会在页面的dom元素加载完毕后就执行,
而无需等到图片或其余媒体下载完毕.
可是有时候确实咱们有须要等到页面的全部东西都加载完后再执行咱们想执行的函数,因此是该使用$(window).load(function(){...})仍是
该使用$(function(){})每每须要结合具体须要而做不一样的选择.
最后附上一段在全部DOM元素加载以前执行的jQuery代码
<script type="text/javascript">
(function() {
alert("DOM还没加载哦!");
})(jQuery)
</script>
呵呵,有时候咱们也有这个需求!
完毕!