document.ready和onload的区别——JavaScript文档加载完成事件
页面加载完成有两种事件
一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)
二是onload,指示页面包含图片等文件在内的所有元素都加载完成。
用jQ的人很多人都是这么开始写脚本的:
$(function(){
// do something
});
其实这个就是jq ready()的简写,他等价于:
$(document).ready(function(){
//do something
})
//或者下面这个方法,jQuer的默认参数是:“document”;
$().ready(function(){
//do something
})
这个就是jq ready()的方法就是Dom Ready,他的作用或者意义就是:在DOM加载完成后就可以可以对DOM进行操作。
一般情况先一个页面响应加载的顺序是:域名解析-加载html-加载js和css-加载图片等其他信息。
那么Dom Ready应该在“加载js和css”和“加载图片等其他信息”之间,就可以操作Dom了。
1.window.onload方法
⑴执行时机:
在网页中所有元素(包括元素的所有关联文件)完全加载到浏览器后才执行,即JavaScript 此时可以访问网页中的所有元素。
window.οnlοad=function(){ $(window).load(function(){
//编写代码 等价于 //编写代码
} });
⑵多次使用:
JavaScript的onload事件一次只能保存对一个函数的引用,他会自动用最后面的函数覆盖前面的函数。
function one(){
alert("one");
}
function two(){
alert("two");
}
window.οnlοad=one;
window.οnlοad=two;
//运行代码后只有 two
2.$(document).ready()方法
⑴执行时机:在DOM完全就绪时就可以被调用。(这并不意味着这些元素关联的文件都已经下载完毕)
举个例子:$(document).ready()方法明知要DOM就绪就可以操作了,不需要等待所有图片下载完毕。
⑵多次使用:
function one(){
alert("one");
}
function two(){
alert("two");
}
$(document).ready(function(){
one();
});
$(document).ready(function(){
two();
});
//运行代码后
//先是:one
//先是:two
转载:https://www.cnblogs.com/eric-qin/p/4325750.html
JQ中的$(document).ready()大家应该用的非常多,基本每个JS脚本中都有这个函数的出现有时甚至会出现多个,那么另一个加载函数$(window).load相对出现的次数就很少了,下面为大家介绍一下两者的区别与他们的执行顺序
一般情况下一个页面响应加载的基本顺序是:域名解析 -> 加载html -> 加载js和css -> 加载图片等其他信息。
那么我们在编写JS脚本时什么情况下使用$(document).ready()又在什么情况下使用$(window).load呢,我们先来了解一下两者的功能
一、$(document).ready()
从字面的意思上理解,就是文档准备好了。也就是浏览器已经加载并解析完整个html文档,dom树已经建立起来了,然后执行此函数
原生JavaScript中的写法如下:
1
2
3
|
document.ready= function (){ alert( "ready" ); } |
jQuery中的写法如下:
1
2
3
|
$(document).ready( function (){ alert( "ready" ); }); |
或
1
2
3
|
$( function (){ alert( "ready" ); }); |
二、$(window).load
在网页中所有元素(包括页面中图片,css文件等所有关联文件)完全加载到浏览器后才执行
原生JavaScript中的写法如下:
1
2
3
|
window.onload = function (){ alert( "onload" ); }; |
jQuery中的写法如下:
1
2
3
|
$(window).load( function (){ alert( "onload" ); }); |
两者的区别在于:
1.执行时间不同
$(document).ready()是在页面完成HTML的加载并建立了DOM树之后就开始执行,但这并不代表页面的所
有数据已经全部加载完成,一些大的图片有会在建立DOM树之后很长一段时间才行加载完成,而
$(window).load()就是整个页面已经加载完毕后才执行,包括图片等一些关联文件。
2.可以被执行的次数不同
$(document).ready()可以在JavaScript代码中出现多次,并且里面的函数或者代码都可以执行;而$(window).load()只能在JavaScript代码中出现一次,如果有多个$(window).load(),那么只有最后一个$(window).load()里面的函数或者代码才会执行,之前的$(window).load()都将被覆盖;
3.执行的效率不同
如要在dom的元素节点中添加onclick属性节点,这时用$(document).ready()就要比用$(window).load()的效率高;但是在某些时候还必须得用$(window).load()才行
总结一下就是:$(window).load()在$(document).ready之后执行,且页面中所有内容全部加载完成后才会执行,两者的使用时机一目了然,大家可以自行决定。