Przeczytałem artykuł na https://developer.mozilla.org/en/DOM/element.addEventListener, ale nie mogę zrozumieć useCapture
atrybutu. Definicja to:
Jeśli true, useCapture wskazuje, że użytkownik chce zainicjować przechwytywanie. Po zainicjowaniu przechwytywania wszystkie zdarzenia określonego typu zostaną wysłane do zarejestrowanego odbiornika, zanim zostaną wysłane do dowolnych obiektów EventTargets pod nim w drzewie DOM. Wydarzenia, które bulgoczą w górę przez drzewo, nie wyzwalają słuchacza wyznaczonego do użycia przechwytywania.
W tym kodzie zdarzenie nadrzędne wyzwala się przed dzieckiem, więc nie jestem w stanie zrozumieć jego zachowania. Obiekt dokumentu ma usecapture true, a div div ma usecapture ustawiony na false, a dokument usecapture jest przestrzegany.
function load() {
document.addEventListener("click", function() {
alert("parent event");
}, true);
document.getElementById("div1").addEventListener("click", function() {
alert("child event");
}, false);
}
<body onload="load()">
<div id="div1">click me</div>
</body>
no specification is made as to the order in which they will receive the event with regards to the other EventListeners on the EventTarget
. Nie przetestowałem wszystkich przeglądarek, więc mogą się zdarzyć, że zaimplementują to w ten sam sposób. Zdarzenia przechwytywania będą jednak wykonywane przed zdarzeniami nie przechwytywania.