1.网页在加载完毕后,会触发一个与window对象关联的onload事件;
如: window.onload = firstFunc;
2.但是如果要添加让页面加载后就加载多个函数呢?
window.onload = firstFunc;
window.onload = secondFunc;
这样写的话,是逐一绑定,实际上只有最后一个函数secondFunc被实际执行;
3.如果只加载两个函数的话,可以用匿名函数;
window.onload = function(){
firstFunc();
secondFunc();
}
4.但是匿名函数只能加载两个,那么要加载多个方法怎么办呢?这个时候可以用addLoadEvent函数;
/**
页面加载(图片等)后要执行的函数添加到队列中,依次执行
***/
addLoadEvent(firstFunc);
addLoadEvent(secondFunc);
addLoadEvent(thirdFunc);
function addLoadEvent(func){
var oldonload = window.onload;
if(typeof window.onload != 'function'){//如果window.onload里面没有函数,就添加一个进去
console.log("只执行一次,第一个添加进队列的函数");
window.onload = func;
console.log("第一个添加进队列的函数,添加完成!!!!");
}else{//如果window.onload里面有函数了,就把其他的函数添加进去
window.onload = function(){
oldonload();
func();
}
}
}
function firstFunc(){
console.log("函数firstFunc被添加进队列");
}
function secondFunc(){
console.log("函数secondFunc被添加进队列");
}
function thirdFunc(){
console.log("函数thirdFunc被添加进队列");
}
执行后输出如下:都添加进队列后,依次执行这些函数
5.如果加上JQuery的$(function(){})方法,$(function(){})方法执行在window.onload前面。
$(function(){})方法是在DOM(一个页面的标签树)加载完成之后就执行的,比window.onload早执行。
$(function() {}) 是$(document).ready(function()的简写。
$(function(){
console.log("jQuery执行$(function(){})方法 -- 1!!");
}
);
6.如果$(function(){})方法有两个呢?都会执行,这个方法不会覆盖。
$(function(){
console.log("jQuery执行$(function(){})方法 -- 1!!");
}
);
$(function(){
console.log("jQuery执行$(function(){})方法 -- 2!!");
}
);