日期:2014-05-16 浏览次数:20441 次
jQuery的执行机制(onload与ready的区别)
结论得出前自行测试: 为了测试是否真如所说的那样,所以在页面插入了20000张照片,照片数量少得不出什么结论,所以改用console.log()来测试,这样一来我可以很好的看出在页面最底端有没有都加载出来,还有是打印出的结果的事件顺序。
所用到的JS代码是:
console.time('name'); window.onload = function() { console.log('onload2'); console.timeEnd('name'); }
所以找出原因是,onload在页面都执行完后,也就是标签以及图片都加载出来后才执行相应的JS代码,
运行测试后; onload在20000张照片的强大作用下耗时:30ms
Ready的测试:
所用到的JS代码是:
console.time('name'); console.time('name'); $(document).ready(function(){ console.log('ready1');console.timeEnd('name'); })
在运行ready的JQ代码时,Ready是在页面还未都加载完成就显示结果了,且时间是20ms
在测试时候我加入了两个onload,这时候,还有加入两个ready做测试,
window.onload = function() { console.log('onload1'); } window.onload = function() { console.log('onload2'); } |
console.time('name'); $(document).ready(function(){ console.log('ready1'); }) console.time('name'); $(document).ready(function(){ console.log('ready2'); }) |
显示运行结果是:
可以看出,在基于前面的总结情况下,ready比onload先行输出结果,也就是执行的机制不同,再来看,onload2输出,onload1却没有输出,可以看出,在编写个数显示出来的时候,ready支持编写多个个数,而且是按照顺序输出的,而onload只支持一个,后者优先级高选择后者。
总结:
① 执行时机: