EventTarget#

Wstęp#

Interfejs EventTarget stanowi definicję Web IDL dla obiektów, na których będzie można zarejestrować uchwyty zdarzeń. Obiekty typu EventTarget są potocznie nazywane celami zdarzeń # (events target), ale stanowią szerszą definicję niż to, co wskazywane jest przez właściwość Event.target.

Cel zdarzenia może być docelowym obiektem (właściwość Event.target), do którego zdarzenie zostało wysłane w chwili wystąpienia określonych okoliczności, ale może też być obiektem (właściwość Event.currentTarget), przez który zdarzenie przepływa (czyli aktualnym celem zdarzenia). Każdy cel zdarzenia jest powiązany z listą uchwytów zdarzeń.

Uchwyt zdarzenia # (event listener) jest powiązany z funkcją zwrotną przeznaczoną dla konkretnego zdarzenia. Każdy uchwyt zdarzenia składa się z typu # (type) zdarzenia, funkcji zwrotnej # (callback) oraz przechwytywania # (capture).

W interfejsie EventTarget zdefiniowano polecenia, które pozwalają rejestrować i usuwać uchwyty zdarzeń na danym celu zdarzenia oraz wysyłać zdarzenia do tego celu zdarzenia. Jest to najbardziej uniwersalny sposób umożliwiający obsługę zdarzeń (tzw. uchwyt przez metodę). Starsze mechanizmy (uchwyt przez właściwość oraz uchwyt przez atrybut) oferują mniejsze możliwości, ale ze względu na kompatybilność wsteczną wciąż są opisywane w najnowszym HTML5 i obsługiwane przez aktualne implementacje.

Z perspektywy DOM celami zdarzeń mogą być wszystkie węzły ponieważ interfejs Node dziedziczy po interfejsie EventTarget. Teoretycznie każde zdarzenie będzie miało scharakteryzowane dopuszczalne dla siebie cele, np. zdarzenie typu keydown można wysyłać jedynie do węzłów typu Document i Element. W praktyce większość implementacji pozwala na dużą swobodę w tym zakresie.

Z punktu widzenia pozostałych specyfikacji celami zdarzeń mogą być inne obiekty, do których można kierować lub które generują jakieś zdarzenia, np. obiekty typu Window lub XMLHttpRequest.

Interfejs EventTarget nie dziedziczy z żadnego innego interfejsu w ogólnym ujęciu DOM, chociaż w środowisku JS obiekty implementujące ten interfejs będą dziedziczyły z prototypu najwyższego rzędu. Zachowanie takie jest czymś normalnym w przypadku języka ECMAScript.

Metody EventTarget#

NazwaOpis
EventTarget.addEventListener()Rejestruje nasłuch zdarzenia dla danego celu zdarzenia.
EventTarget.dispatchEvent()Wysyła konkretne zdarzenie do danego celu zdarzenia.
EventTarget.removeEventListener()Usuwa zarejestrowany nasłuch zdarzenia dla danego celu zdarzenia.

Interfejs Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
[Exposed=(Window,Worker)]
interface EventTarget # {
	void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
	void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
	boolean dispatchEvent(Event event);
};

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

EventTarget (H1) Wstęp (H2) Metody EventTarget (H3) Interfejs Web IDL (H3) Specyfikacje i inne materiały (H3)