javascript事件綁定addEventListener,attachEvent

 

為瞭考慮瀏覽器的兼容性問題,都需要對瀏覽器進行類型檢測。

 

Java代碼 

function addHandler(el, type, fn){ 

        if(window.attachEvent){ 

             //ie事件名稱前增加on開頭 

             el.attachEvent("on" + type, fn); 

        }else{ 

             //記得加上第三個參數,由於ie下沒有事件捕捉,所以ff設置為事件冒泡保持一致 

             el.addEventListener(type, fn, false); 

        } 

 

大多數前端開發中都會找到這樣代碼,但是從效率上來說還需要進一步考慮,這樣在每次綁定時候都需要判斷一次,其實在第一次調用的時候就已經知道瀏覽器的類型。

Java代碼 

function addHandler(el, type, fn){ 

        if(window.attachEvent){ 

             //ie事件名稱前增加on開頭 

            addHandler =function(el, type, fn){ 

                 el.attachEvent("on" + type, fn); 

            }  

        }else{ 

             //記得加上第三個參數,由於ie下沒有事件捕捉,所以ff設置為事件冒泡保持一致 

             addHandler = function(type, fn, false){ 

                 el.addEventListener(type, fn, false); 

            } 

        } 

       addHandler(type, fn, false); //第一次調用 

 

在第一次調用以後的綁定方法就不需要每次都判斷類型瞭,這樣減少瞭重復的類型判斷。

You May Also Like