Handling Events - YunusEmreCMD/blokTech GitHub Wiki
Event Handlers
Je kunt een functie aan een actie koppelen door addEventListener
te gebruiken op het element waar er interactie mee gevoerd wordt, dit moet in de javascript worden gedaan. Hetzelfde kan ook bereikt worden door een element in de HTML een onclick
attribuut mee te geven.
Het verschil ligt in het volgende: Aan een onclick
kan je maar 1 actie koppelen, terwijl je bij een addEventListener
meer acties kunt koppelen.
Propagation
Wanneer een parent element een actie aan zich gekoppeld krijgt, zullen de children ook dezelfde actie krijgen. Maar de actie op het element dat specifieker is benoemd wordt eerder uitgevoerd. (Bijvoorbeeld een knop in een paragraaf.) Om tegen te gaan dat beide acties worden uitgevoerd kan je stopPropagation gebruiken.
button.addEventListener("mousedown", event => {
console.log("Handler for button.");
if (event.button == 2) event.stopPropagation();
});
Verschillende soorten events/clicks
Key events
pointer events
touch events
mouse clicks
mouse motion
scroll events
focus events
load events
.
Debouncing
Events als mousemove
en scroll
zijn acties die vaak achter elkaar worden gedaan. Als je lange handlers gebruikt op deze events, zal de website sloom kunnen aanvoelen.
Om dit tegen te gaan kan je gebruik maken van setTimeout, dit zorgt ervoor dat de handler op je event niet te vaak af gaat. Deze oplossing wordt “deboucing” genoemd.
Zie hieronder een voorbeeld:
let textarea = document.querySelector("textarea");
let timeout;
textarea.addEventListener("input", () => {
clearTimeout(timeout);
timeout = setTimeout(() => console.log("Typed!"), 500);
});