经常开发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则是有值得。类似的问题还有很多,只要记住两者区别就很容易能找到问题所在。
如有不足,请各位帮忙补充。
谢谢。
浙公网安备 33010602011771号