Ich habe den Artikel unter https://developer.mozilla.org/en/DOM/element.addEventListener gelesen, kann aber das useCapture
Attribut nicht verstehen . Definition gibt es:
Wenn true, gibt useCapture an, dass der Benutzer die Erfassung starten möchte. Nach dem Starten der Erfassung werden alle Ereignisse des angegebenen Typs an den registrierten Listener gesendet, bevor sie an EventTargets darunter in der DOM-Struktur gesendet werden. Ereignisse, die durch den Baum nach oben sprudeln, lösen keinen Listener aus, der für die Verwendung der Erfassung vorgesehen ist.
In diesem Code wird das übergeordnete Ereignis vor dem untergeordneten Ereignis ausgelöst, sodass ich sein Verhalten nicht verstehen kann. Das Dokumentobjekt hat usecapture true und child div hat usecapture auf false gesetzt und document usecapture wird befolgt. Deshalb wird die document-Eigenschaft gegenüber child bevorzugt.
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
. Ich habe nicht alle Browser getestet, daher können sie alle auf die gleiche Weise implementiert werden. Erfassungsereignisse werden jedoch vor nicht erfassten Ereignissen durchgeführt.