经常开发B/S的人,在page页面也许常常看到jQery的$(document).ready() 或者$(function(){..}),和JavaScript 的Window.onload.有很多人没有在意过两者区别,从而在编程时候会遇到一些自认为无法解释的问题。首先来解释下两者区别:

1.执行时机。

jQery的$(document).ready()只要在DOM结构回执完成,可能DOM 元素相关的东西没有加载。就调用函数咯。

Window.onload则必须等待网页中所有的内容加载完毕后才能执行。

2. 执行次数

jQery的$(document).ready() 可以同时编写多个并按顺序执行一次。

Window.onload则只能有一次。如果多次则覆盖。

有意思的是,两者可以共存。但是不值得是否会有隐患。

不同区别最重要在于执行时机。往往在编程中这个差别会导致想不到的错误。下面有个例子就可以很好说明问题。

<div id="wrapIframe">
<iframe id="frame"src="../Account/ChangePassword"></iframe>
</div>

<script type="text/javascript">
$(document).ready(function () {
var frameInnerBodyA = document.getElementById("frame").contentDocument.body;

});

window.onload = function () {

var frameInnerBodyB = document.getElementById("frame").contentDocument.body;
};
</script>

通过浏览器开发工具调试可以明显看出frameInnerBodyAd为null,而frameInnerBodyB则是有值得。类似的问题还有很多,只要记住两者区别就很容易能找到问题所在。

如有不足,请各位帮忙补充。

谢谢。