Poznajemy properties klasy Event, której wielokrotnie używaliśmy i najwyższa pora lepiej ją zrozumieć. Do dzieła.
e.target: to już znamy. Element, który odpalił event w swojej target phase.
e.currentTarget: też znamy. Element, do którego jest przypięty event listener (odpalić zaś mógł element-dziecko)
e.defaultPrevented: bool, który pokazuje, czy preventDefault zostało użyte, czy nie. Przykład z MDN:
<p><a id="link1" href="#link1">Visit link 1</a></p>
<p><a id="link2" href="#link2">Try to visit link 2</a> (you can't)</p>
<p id="log"></p>
function stopLink(event) {
event.preventDefault();
}
function logClick(event) {
const log = document.getElementById("log");
if (event.target.tagName === "A") {
log.innerText = event.defaultPrevented
? `Sorry, but you cannot visit this link!\n${log.innerText}`
: `Visiting link…\n${log.innerText}`;
}
}
const a = document.getElementById("link2");
a.addEventListener("click", stopLink);
document.addEventListener("click", logClick);
e.eventPhase: Faza eventu wyrażona liczbowo. 0 to None, 1 to capture phase, 2 to AT_TARGET, 3 to bubble phase.
e.type: nic innego jak nazwa eventu. Przykład z MDN:
<p>Press any key or click the mouse to get the event type.</p>
<p id="log"></p>
function getEventType(event) {
const log = document.getElementById("log");
log.innerText = `${event.type}\n${log.innerText}`;
}
// Keyboard events
document.addEventListener("keydown", getEventType, false); // first
document.addEventListener("keypress", getEventType, false); // second
document.addEventListener("keyup", getEventType, false); // third
// Mouse events
document.addEventListener("mousedown", getEventType, false); // first
document.addEventListener("mouseup", getEventType, false); // second
document.addEventListener("click", getEventType, false); // third
Warto sobie wypróbować, aby ogarnąć kolejność różnych eventów, ale tak, nie typ, tylko nazwa.
e.timestap: kiedy utworzono event, UNIX timestamp.
e.bubbles: czy event bąbelkuje (propaguje wzwyż, pamiętajmy, że jest też propagacja wszerz)
e.composed: jeżeli nie bąbelkuje, to nie ma znaczenia. W przypadku, gdy bąbelkuje, określa, czy odpalony w shadow DOMie wybąbelkuje poza swój shadow DOM.
e.cancelable: czy można na evencie zawołać preventDefault, czy nie.