Entlistener () - interfețe web api, MDN

EventTarget.addEventListener () metoda înregistrează un manipulator de eveniment specific cauzat EventTarget.

Notă: Pentru ascultătorii eveniment atașat la obiectivul evenimentului; evenimentul este în faza de țintă, mai degrabă decât captarea și barbotare faze. Evenimentele din faza țintă va declanșa toți ascultătorii pe un element, indiferent de parametrul useCapture.







Notă: useCapture a devenit opțional numai în versiunile mai recente ale marilor browsere; de exemplu, nu a fost opțională înainte de Firefox 6. Tu ar trebui să ofere acest parametru pentru cel mai larg de compatibilitate.

wantsUntrusted Dacă este setat la true. ascultătorul va primi evenimentele generate trimise de o pagină (implicit este falsă la Chrome și adevărat pentru pagini web obișnuite). Această opțiune este disponibilă numai în Gecko și este util mai ales pentru utilizarea în addons și browser-ul în sine. A se vedea Interacțiunea între pagini privilegiate și non-privilegiate pentru exemple.

Adăugarea unui ascultător simplu

conținut HTML

In exemplul de mai sus, modifyText () înregistrează ascultător eveniment pentru clic, folosind addEventListener (). Faceți clic oriunde în tabel se va ridica handler și a alerga modifyText ().

Dacă aveți nevoie pentru a trece parametrii ascultătorului, puteți utiliza o funcție anonimă.

ascultător eveniment dintr-o funcție anonimă

conținut HTML

De ce să folosiți addEventListener?

addEventListener - este o modalitate de a înregistra de tratare a evenimentelor, așa cum este descris în documentația W3C DOM. Aici este o listă de avantaje ale utilizării sale:

  • Acesta vă permite să adăugați mai multe pentru stivuitoare același eveniment. Acest lucru este util mai ales pentru biblioteci DHTML sau extensii Mozilla. care ar trebui să funcționeze în condiții de utilizare a unor terțe părți biblioteci / extensii.
  • Acesta oferă fază precisă de comutare de control (apel) handler (captură sau ascensiune)
  • Declanșat pe orice element DOM, nu numai pe elemente HTML.

Adăugarea unui ascultător în timpul procesării evenimentului

Dacă adăugat la EventListener EventTarget în timpul procesării evenimentului, acesta nu va fi cauzată de acțiunile curente, dar poate fi declanșat într-o etapă ulterioară a evenimentelor de prelucrare în procesarea pe legătură în sus.

Multiple ascultătorii eveniment identice

În cazul în care EventListener identice multiple elemente înregistrate pe un EventTarget cu aceiași parametri, duplicat ascultători ignorate. Ele nu permit EventListener'u să fie numit de două ori și, deoarece aceiași elevi sunt ignorate, nu este nevoie pentru a le elimina manual, folosind metoda removeEventListener.

Această valoare de ieșire

În general, este de dorit să se transfere membru în care caz de sarcină handler, de exemplu, folosind manipulatorii generalizate pentru elemente similare. La adăugarea unei funcții folosind addEventListener () valoarea acestei variabile este schimbat - act de faptul că această valoare este trecut la o funcție a apelantului.







În exemplul de mai sus, valoarea acestei variabile în cadrul modifyText () apel la un eveniment de clic atunci când egal cu masa de „T“. Acesta este comportamentul opus care are loc în cazul în care handler este adăugat în HTML markup:

Valoarea acestei variabile în cadrul modifyText () apel cu un eveniment de clic este egal cu link-ul la nivel mondial (fereastră) obiect (sau nedefinită folosind modul strict)

EXEMPLU se leagă cu și fără:

Problema în exemplul de mai sus este că nu se poate elimina ascultător cauzat cu bind. O altă soluție utilizează o funcție specială handleEvent pentru a intercepta orice eveniment:

Legacy Internet Explorer și attachEvent

În Internet Explorer, sub 9 versiune, puteți folosi în loc de addEventListener attachEvent standardul. Suport pentru IE, exemplul de mai sus pot fi modificate după cum urmează:

În attachEvent există un dezavantaj: acest lucru se va referi la fereastra obiect, mai degrabă decât elementul pe care el a fost chemat.

compatibilitate

Puteți ocoli metodele din addEventListener. removeEventListener. Event.preventDefault și Event.stopPropagation neacceptată în IE 8, utilizând următorul cod în scriptul nachaleVashego. Acest cod sprijină utilizarea handleEvent și evenimente DOMContentLoaded.

Vechiul mod de înregistrare manipulare eveniment

addEventListener () a fost adăugat 2 Evenimente specificație DOM. Înainte de aceasta, studenții au fost adăugate după cum urmează:

Această metodă înlocuiește actualul click ascultător eveniment. în cazul în care acestea există. Același lucru este valabil și pentru alte evenimente asociate acestora și manipulare, cum ar fi neclaritate (onblur), keypress (onkeypress), și așa mai departe.

Din moment ce a fost în esență o parte din DOM 0, această metodă are o podderzhkui largă nu necesită cod special de browser; prin urmare, este frecvent utilizat pentru a adăuga ascultători dinamic cu excepția cazului în care doriți funcții avansate addEventListener ().

memorie întrebări

În primul caz, o nouă funcție (anonim) este creat pentru fiecare etapă ciclu. În al doilea caz, o declarație de pre-funcție este folosită ca o tratare a evenimentului. Prin urmare, o amprentă de memorie mai mică. Mai mult decât atât, în primul caz, din cauza lipsei de trimiteri la funcții anonime, nu poți suna element.removeEventListener. pentru că nu există nici o referire la un handler acel timp, la fel ca în cazul Stora poate cauza myElement.removeEventListener ( „clic“, processEvent, fals).

compatibilitate

Note Gecko

  • Înainte de Firefox 6, browser-ul va arunca o excepție în cazul în care parametrul useCapture nu este exact egal cu fals. Înainte de Gecko 9.0 (Firefox 9.0 / 9.0 Thunderbird / SeaMonkey 2.6), addEventListener () va arunca o excepție dacă parametrul ascultător a fost egal cu zero; Acum, metoda este finalizată fără o eroare, dar nu face nimic.

Note privind WebKit

A se vedea, de asemenea,

specificație

etichete de hârtie și participanți

Vă mulțumim! Vă rugăm să verificați dosarul dvs. „Inbox“ pentru a confirma abonamentul.

Dacă anterior nu a confirmat abonarea la newsletter Mozilla, va trebui să o facă. Vă rugăm să verificați inbox-ul sau spam în căsuța poștală pentru a vedea dacă acesta nu a fost o scrisoare de la noi.

Ascunde abona la newsletter

De ce MDN arată diferit?

MDN se schimbă, concentrându-se doar pe documentația tehnologiilor web. Toate același conținut mare de a rămâne aici; vom schimba doar elementele vizuale și de navigare pentru a vă ajuta să găsiți rapid documentația pentru tehnologia web.

Dar nu vă faceți griji, MDN și Mozilla sunt încă împreună. De fapt, vom actualiza numai proiectarea MDN în mod repetat, pentru a se conforma cu noua emblema și culorile Mozilla.

Cititi mai multe despre reproiectarea în post pe blog-ul nostru. Vă mulțumim pentru utilizarea MDN!

Ascunde mesaj despre reproiectarea