JavaScript - wydarzenia DOM cz. 1
Opublikowano pon 04 maja 2020 w javascript • 3 min read
Nasłuchiwacz wydarzeń ;)
Aby dodać interakcji do strony internetowej przy pomocy JS należy do wybranego przez siebie elementu dołączyć tzw. 'nasłuchiwacz wydarzeń' (ang. event listener)
.addEventListener(wydarzenie, funkcja-przekazana-do-wywołania) - ta metoda przyjmuje dwa argumenty rodzaj 1) rodzaj wydarzenia np. 'click' (kliknięcie myszy) oraz 2) funkcję jaka ma się wywołać w momencie jego zajścia tzw callback/bez nawiasów.
Przykładowe zastosowanie
function helloWorld (e) {
console.log('Hello World');
e.preventDefault();
}
document.querySelector('button').addEventListener('click', helloWorld)
this. - wyrażenie reprezentujące element, na którym doszło do wydarzenia // cenne w przypadku gdy jedno wydarzenie zostało nastawione na więcej niż jeden element (np. na wszystkie przyciski, a ma zmieniać się jeden, który wywołał akcję)
const buttonsList = document.querySelectorAll('.btn');
for(let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', function(e){
this.style.backgroundColor = 'green'
});
}
.preventDefault() - zapobiega domyślnemu zachowaniu się elementu, np. w przypadku linku jest to przejście na kolejną stronę etc.
funkcja wywołująca obiekt event
function onClick(event) {
console.log(event)
}
document.querySelector('button').addEventListener('click', event)
Obiekt event zawiera zbiór informacji na temat wydarzenia, do którego doszło np. target - zawierający informację, na temat obiektu, na którym doszło do danego wydarzenia
.target - zwraca element, który spowodował wywołanie wydarzenia/event
event.target.id - zwraca id elementu, który był celem
event.target.className/.classList - zwraca nazwę klasy/listę klas elementu, który jest targetem
event.target.innerText - zwraca tekst elementu celowego
element.target.value - zwraca wartość elementu / przydatne w formularzu
.type - zwraca typ wydarzenia
event.type - z np. mouseover
.timeStamp - czas w którym doszło do wydarzenia
.clientY/.clientX - miejsce wydarzenia relatywnie do granic okna przeglądarki / zwraca wartość w px
.offsetY/.offsetX - miejsce wydarzenia relatywne wobec elementu, na którym dochodzi do danego wydarzenia, gdzie punktem wyjściowym jest lewy górny róg / zwraca wartość w px
Typy wydarzeń
Document
DOMContentLoaded - nasłuchuje przeładowania przeglądarki
Przykładowe zastosowanie / w momencie przeładowania przeglądarki (załadowania DOM) dodaj klasę 'd-none' do listy klas elementu input
document.addEventListener('DOMContentLoaded', function () { input.classList.add('d-none'); });
Mysz
click - pojedyncze kliknięcie
dblclick - podwójne kliknięcie
mousedown - kliknięcie i przytrzymanie
mouseup - puszczenie po mousedown
mouseenter - najechanie kursorem na obiekt / dotyczy jedynie obiektu ale nie jego dzieci
mouseleave - opuszczenie kursorem obszaru obiektu
mouseover - takie samo jak mouseenter ale dotyczy również elementów zawartych w danym elemencie/całości
mouseout- takie samo jak mouseout ale dotyczy również elementów zawartych w danym elemencie/całości
mousemove - ruch wewnątrz obiektu, zwraca koordynaty w px znajdowania się myszki (offsetX,offsetY)
Input i formularze
.type - zwraca typ wydarzenia
Przykładowe zastosowanie
const form = document.querySelector('form')
const input = document.querySelector('input')
form.addEventListener('submit', runEvent);
function runEvent(e){
console.log(`typ wydarzenia:` ${e.type})
}
submit - nasłuchuje wysłania formularza // często używany z preventDefault() - aby powstrzymać przed domyślną akcją wywołaną przez dany element
reset - wywoływane przy zresetowaniu formularza
.value - zwraca wartość wpisaną w formularz, pozwala również nadać wartość domyślną formularzowi np. po wykonanym przesłaniu
let inputContent = input.value
function runEvent(e){
console.log(input.value);
input.value = ''; // czyści formularz
}
Klawiatura
keydown - działa w momencie, w którym klawisz jest wciśnięty // zwraca true
keyup - działa w momencie pozostawienia klawisza // zwraca true
keypress - działa w momencie wciśnięcia guzika // zwraca true
altKey - działa w momencie przyciśnięcia klawisza ALT // zwraca true
ctrlKey - działa w momencie przyciśnięcia klawisza CTRL // zwraca true
shiftKey działa w momencie przyciśnięcia klawisza Shift // zwraca true
Inne
focus - focus na elemencie
blur - kliknięcie po za element (eliminacja focusa)
cut - rejestruje wycięcie treści
paste - rejestruje wklejenie
input - rejestruje każdy element związany z inputem (np. cut,paste,type, a także dopisanie treści)
Przykładowo:
HTMLInputElementObject.addEventListener('input', function (evt) {
console.log(this.value);
});
change - działa na
resieze - zmiana okna
touch -> touchstart, touchmove, touchend,
touchcancel
Źródła: