JavaScript HTML DOM Προγραμματιστές Ενεργειών

Η μέθοδος addEventListener()

Παράδειγμα

Προσθέστε ακροατήρες γεγονότων που θα προκαλέσουν την εκκίνηση όταν ο χρήστης κάνει κλικ στο κουμπί:

document.getElementById("myBtn").addEventListener("click", displayDate);

Δοκιμάστε το προσωπικά

addEventListener() Η μέθοδος προσθέτει επεξεργαστές γεγονότων για το καθορισμένο στοιχείο.

addEventListener() Η μέθοδος προσθέτει επεξεργαστές γεγονότων στο στοιχείο χωρίς να καλύπτει τους υπάρχοντες επεξεργαστές γεγονότων.

Μπορείτε να προσθέσετε πολλαπλούς επεξεργαστές γεγονότων σε ένα στοιχείο.

您能够向一个元素添加多个相同类型的事件处理程序,例如两个 "click" 事件。

您能够向任何 DOM 对象添加事件处理程序而非仅仅 HTML 元素,例如 window 对象。

addEventListener() 方法使我们更容易控制事件如何对冒泡作出反应。

当使用 addEventListener() 方法时,JavaScript 与 HTML 标记是分隔的,已达到更佳的可读性;即使在不控制 HTML 标记时也允许您添加事件监听器。

您能够通过使用 removeEventListener() 方法轻松地删除事件监听器。

语法

element.addEventListener(event, function, useCapture);

第一个参数是事件的类型(比如 "click" 或 "mousedown")。

第二个参数是当事件发生时我们需要调用的函数。

第三个参数是布尔值,指定使用事件冒泡还是事件捕获。此参数是可选的。

注意:请勿对事件使用 "on" 前缀;请使用 "click" 代替 "onclick"。

向元素添加事件处理程序

Παράδειγμα

当用户点击某个元素时提示 "Hello World!":

element.addEventListener("click", function(){ alert("Hello World!"); });

Δοκιμάστε το προσωπικά

您也可以引用外部“命名”函数:

Παράδειγμα

当用户点击某个元素时提示 "Hello World!":

element.addEventListener("click", myFunction);
function myFunction() {
    alert ("Hello World!");
}

Δοκιμάστε το προσωπικά

向相同元素添加多个事件处理程序

addEventListener() 方法允许您向相同元素添加多个事件,同时不覆盖已有事件:

Παράδειγμα

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

Δοκιμάστε το προσωπικά

您能够向相同元素添加不同类型的事件:

Παράδειγμα

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

Δοκιμάστε το προσωπικά

向 Window 对象添加事件处理程序

addEventListener() 允许您将事件监听器添加到任何 HTML DOM 对象上,比如 HTML 元素、HTML 对象、window 对象或其他支持事件的对象,比如 xmlHttpRequest 对象。

Παράδειγμα

添加当用户调整窗口大小时触发的事件监听器:

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

Δοκιμάστε το προσωπικά

Αποστολή παραμέτρων

Όταν αποστέλλετε τιμές παραμέτρων, χρησιμοποιήστε τη μορφή της "ανώνυμης συνάρτησης" για να καλέσετε τη συγκεκριμένη συνάρτηση ως παράμετρο:

Παράδειγμα

element.addEventListener("click", function(){ myFunction(p1, p2); });

Δοκιμάστε το προσωπικά

Διασπορά κορμού ή σύλληψη γεγονότων;

Στο HTML DOM υπάρχουν δύο μεθόδους διασποράς γεγονότων: διασπορά κορμού και σύλληψη.

Η διασπορά γεγονότων είναι μια μέθοδος που καθορίζει τη σειρά των στοιχείων όταν συμβαίνει γεγονός. Αν το στοιχείο <div> έχει ένα στοιχείο <p>, και ο χρήστης κάνει κλικ στο στοιχείο <p>, ποιο στοιχείο "click" θα πρέπει να χειριστεί πρώτα;

Στην διασπορά κορμού, τα εσωτερικά στοιχεία του γεγονότος θα χειριστούν πρώτα, μετά από αυτά που βρίσκονται έξω: πρώτα θα χειριστεί το γεγονός κλικ του στοιχείου <p>, μετά από αυτό του στοιχείου <div>.

Στη σύλληψη, ο εξωτερικόςτατα στοιχεία του γεγονότος θα χειριστούν πρώτα, μετά από αυτά που βρίσκονται μέσα: πρώτα θα χειριστεί το γεγονός κλικ του στοιχείου <div>, μετά από αυτό του στοιχείου <p>.

Στην μέθοδο addEventListener(), μπορείτε να καθορίσετε τον τύπο διασποράς χρησιμοποιώντας τον παράμετρο "useCapture":

addEventListener(event, function, useCapture);

Η προεπιλεγμένη τιμή είναι falseΘα χρησιμοποιηθεί η διασπορά κορμού, αν οριστεί trueΑν οριστεί, η εκδήλωση χρησιμοποιεί τη διασπορά σύλληψης.

Παράδειγμα

document.getElementById("myP").addEventListener("click", myFunction(), true);
document.getElementById("myDiv").addEventListener("click", myFunction(), true);

Δοκιμάστε το προσωπικά

removeEventListener() μέθοδου

removeEventListener() Η μέθοδος θα αφαιρέσει την επαναληπτική διαδικασία που έχει προσθέσει μέσω addEventListener() Επαναληπτικές διαδικασίες προσθήκης μεθόδων:

Παράδειγμα

element.removeEventListener("mousemove", myFunction());

Δοκιμάστε το προσωπικά

Υποστήριξη του προγράμματος πλοηγού

Τα αριθμήματα στη τάβλη αποφασίζουν την πρώτη έκδοση του προγράμματος πλοηγού που υποστηρίζει πλήρως αυτές τις μεθόδους.

Μέθοδος
addEventListener() 1.0 9.0 1.0 1.0 7.0
removeEventListener() 1.0 9.0 1.0 1.0 7.0

Σημείωση:Η υποστήριξη από την IE 8, την Opera 6.0 και τις προηγούμενες εκδόσεις τους δεν υπάρχει addEventListener() και removeEventListener() Μέθοδος. Ωστόσο, για αυτές τις ειδικές εκδόσεις των προγραμματιστών πλοηγών, μπορείτε να χρησιμοποιήσετε attachEvent()} Μέθοδος προσθήκης επεξεργαστή συμβάντος στο στοιχείο, και από detachEvent() Μέθοδος διαγραφής:

element.attachEvent(event, function);
element.detachEvent(event, function);

Παράδειγμα

Λύση πολλαπλών περιηγητών:

var x = document.getElementById("myBtn");
if (x.addEventListener) {                    // Για τους κύριους περιηγητές, εκτός από την IE 8 και παλιότερες εκδόσεις
    x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // Για την IE 8 και παλιότερες εκδόσεις
    x.attachEvent("onclick", myFunction);
} 

Δοκιμάστε το προσωπικά

Εγχειρίδιο αναφοράς HTML DOM Event αντικειμένου

Για να δείτε τη λίστα όλων των συμβάντων HTML DOM, επισκεφθείτε το πλήρες Εγχειρίδιο αναφοράς HTML DOM Event αντικειμένου.