Я прочитал статью на https://developer.mozilla.org/en/DOM/element.addEventListener, но не смог понять useCapture
атрибут. Определение есть:
Если true, useCapture указывает, что пользователь желает инициировать захват. После инициирования захвата все события указанного типа будут отправлены зарегистрированному слушателю перед отправкой в любые EventTargets под ним в дереве DOM. События, которые поднимаются вверх по дереву, не вызовут слушателя, предназначенного для использования захвата.
В этом коде родительское событие инициируется перед дочерним, поэтому я не могу понять его поведение. Объект документа имеет usecapture true, а дочерний div имеет usecapture, установленный в false, и документ usecapture следует. Поэтому свойство документа предпочтительнее, чем child.
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
. Я не тестировал все браузеры, поэтому все они могут реализовать его одинаково. Однако события захвата будут выполняться до событий без захвата.