addEventListener與attachEvent


一、attachEvent和addEventListener

(一)addEventListener

  addEventListener() 方法用於向指定元素添加事件句柄。使用 removeEventListener() 方法來移除 addEventListener() 方法添加的事件句柄。
  語法:element.addEventListener(event, function, useCapture)
        event (必須)字符串,指定事件名。注意: 不要使用 “on” 前綴。 例如,使用 “click” ,而不是使用 “onclick”。
        function (必須)指定要事件觸發時執行的函數。當事件對象會作為第一個參數傳入函數。 事件對象的類型取決於特定的事件。例如, “click”         事件屬於 MouseEvent(鼠標事件) 對象。
        useCapture (可選)布爾值,指定事件是否在捕獲或冒泡階段執行。【true:事件句柄在捕獲階段執行; false:默認,事件句柄在冒泡階段執行】

  可以添加許多事件,添加的事件不會覆蓋已存在的事件。

示例:給button綁定兩個點擊事件,點擊按鈕時,兩個事件都是執行,執行順序為:myFunction 、someOtherFunction ,不會覆蓋。(當然也可以綁定不同的事件)

var obj = document.getElementById("myBtn")
obj.addEventListener("click", myFunction);
obj.addEventListener("click", someOtherFunction);

 

示例:使用 removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄

// 添加 <div> 事件句柄 
document.getElementById("myDIV").addEventListener("mousemove", myFunction);

// 移除 <div> 事件句柄 
document.getElementById("myDIV").removeEventListener("mousemove", myFunction);

(二)attachEvent

  attachEvent方法兩個參數:第一個參數為事件名稱,第二個參數為接收事件處理的函數;

  可以添加許多事件,添加的事件不會覆蓋已存在的事件。

 

二、attachEvent和addEventListener異同點

相同點:

  都是dom對象的方法,可以實現一種事件綁定多個事件處理函數。

 

不同點:

  1.attachEvent是IE有的方法,它不遵循W3C標准,而其他的主流瀏覽器如FF等遵循W3C標准的瀏覽器都使用addEventListener,所以實際開發中需分開處理。

  2.多次綁定后執行的順序是不一樣的,attachEvent是后綁定先執行,addEventListener是先綁定先執行。

三、兼容性

addEventListener——兼容:firefox、chrome、IE、safari、opera;不兼容IE7、IE8

 

attachEvent——兼容:IE7、IE8;不兼容firefox、chrome、IE9、IE10、IE11、safari、opera


免責聲明!

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



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