把多個事件綁定到onload事件的處理方式

     假設我們有兩個函數:firstFunction和secondFunction,如果想讓它們倆都在頁面加載時得到執行,我們該怎麼辦?如果把他們逐一綁定到onload事件上,它們當中將只有最後那個纔會被實際執行:

     window.onload=firstFunction
     window.onload=secondFunction
     secondFunction函數將取代firstFunction。你可能會想:每個事件處理函數只能綁定一條指令。
     有一種辦法可以讓我避過這一難題:可以先創建一個匿名函數來容納這兩個函數,然後把這個匿名函數綁定到onload事件上,如下所示:

window.onload=function(){
			firstFunction();
			secondFunction();
			
		}
它確實能很好的工作--在需要綁定的函數不是很多的場合,這應該是最簡單的解決方案。
這裏有一個彈性最佳方案:
function addLoadEvent(func){
			var oldload=window.onload;
			if(typeof window.onload!='function'){
				window.onload=func;
				
			}
			else{
				window.onload=function(){
					oldonload();
					func();
				}
			}
		}
下面是addLoadEvent函數,將要完成的操作。
1.把現有的window.onload事件處理函數的值存入變量oldonload
2.把在這個處理函數上還沒有綁定任何函數,就像平時那樣把新函數添加給它
3.如果在這個處理函數上已經綁定了一些函數,就把新函數追加到現有指令的末尾。

這就把那些在頁面加載完畢時執行的函數創建爲一個隊列。如果想把剛纔那兩個函數添加到這個隊列裏去,只需寫出以下代碼就行了:
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);
這個函數非常實用,尤其是在代碼變得越來越複雜的時候。無論打算在頁面加載完畢時執行多少個函數,只要多寫一條語句就可以安排好一切了
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章