有一個函數(shù) functionA
,我們想讓它再網(wǎng)頁加載完畢之后立刻執(zhí)行谁不,可以用
window.onload = functionA;
這樣是可以的,但是如果想讓網(wǎng)頁加載完畢之后執(zhí)行兩個函數(shù).
window.onload = functionA;
window.onload = functionB;
但是很遺憾這樣做并不行,結(jié)果瀏覽器只會執(zhí)行 funcitonB
解決方法
可以先創(chuàng)建一個匿名函數(shù)來容納這兩個函數(shù)锅纺,然后把這個匿名函數(shù)綁定的onload
事件上
window.onload = function() {
functionA();
functionB();
}
事實(shí)上確實(shí)解決了問題。但是如果想加載多個函數(shù)呢肋殴?一個一個綁定是很麻煩的囤锉。
最佳解決方案
創(chuàng)建一個 addLoadEvent
函數(shù)。這個函數(shù)的功能
- 把現(xiàn)有的
window.onload
事件處理函數(shù)的值存入變量oldonload
- 如果在這個處理函數(shù)上還沒有綁定任何函數(shù)护锤,就像平時那樣把新函數(shù)添加給它官地。
- 如果在這個處理函數(shù)上已經(jīng)綁定了一些函數(shù),就把新函數(shù)追加到現(xiàn)有指令的末尾烙懦。
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != "function") {
oldonload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}