JavaScript 中 onload 事件綁定多個方法的優化建議


頁面加載完畢時會觸發 onload 事件。基於內容(HTML)要與行為(JavaScript)分離的編碼思想,我們需要將一些對頁面的初始化操作寫在方法內,並通過window.onload = functionName 調用這些方法.
需要調用多個方法時,若使用 window.onload = functionA; window.onload = functionB;,它們之中只有最后一個方法會被實際調用。那么應如何實現調用多個方法呢?

  1. 直接在 HTML 中編寫:

    <body onload="functionA();functionB()">

    由於事件包含在 HTML 內,不符合上述『內容與行為分離』的思想,故不推薦使用這個方法。

  2. 創建一個匿名函數容納需要調用的方法,然后將該匿名函數綁定到 onload 事件上:

    window.onload = function () {
      functionA();
      functionB();
    }

    在需要調用的函數不是太多的時候,這是最簡單的解決方案了。

  3. 當需要調用的方法較多時,我們可以進一步優化,編寫一個專門用於綁定 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);

    現在不管代碼變得多么復雜,當我們需要在頁面加載完畢時調用多少函數,只需要多寫一條語句既可解決。


參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM