頁面加載完畢時會觸發 onload
事件。基於內容(HTML)要與行為(JavaScript)分離的編碼思想,我們需要將一些對頁面的初始化操作寫在方法內,並通過window.onload = functionName
調用這些方法.
需要調用多個方法時,若使用 window.onload = functionA; window.onload = functionB;
,它們之中只有最后一個方法會被實際調用。那么應如何實現調用多個方法呢?
-
直接在 HTML 中編寫:
<body onload="functionA();functionB()">
由於事件包含在 HTML 內,不符合上述『內容與行為分離』的思想,故不推薦使用這個方法。
-
創建一個匿名函數容納需要調用的方法,然后將該匿名函數綁定到
onload
事件上:window.onload = function () { functionA(); functionB(); }
在需要調用的函數不是太多的時候,這是最簡單的解決方案了。
-
當需要調用的方法較多時,我們可以進一步優化,編寫一個專門用於綁定
onload
事件的方法:function addLoadEvent(func) { //把現有的 window.onload 事件處理函數的值存入變量 var oldOnload = window.onload; if (typeof window.onload != "function") { //如果這個處理函數還沒有綁定任何函數,就像平時那樣添加新函數 window.onload = func; } else { //如果處理函數已經綁定了一些函數,就把新函數添加到末尾 window.onload = function() { oldOnload(); func(); } } } //接下來,我們只需要調用這個方法添加自己需要的函數就行了 addLoadEvent(functionA); addLoadEvent(functionB);
現在不管代碼變得多么復雜,當我們需要在頁面加載完畢時調用多少函數,只需要多寫一條語句既可解決。
參考:
- 《JavaScript DOM 編程藝術(第二版)》
- Simon Willison's blog