Praca ze zdarzeniami w JavaScripcie: onclick i obiekt Event

Praca ze zdarzeniami w JavaScripcie: onclick i obiekt Event

Kiedy używasz przeglądarki, rejestruje ona różne rodzaje zdarzeń: kliknięcie w przycisk, wysłanie formularza, najechanie kursorem na element. W ten sposób przeglądarka mówi ci, że użytkownik właśnie coś zrobił. Twój skrypt może wtedy na te zdarzenia odpowiedzieć. Najczęściej odpowiada, aktualizując treść strony przez obiekt document, co czyni ją bardziej interaktywną. W tym rozdziale wypisuję różne rodzaje zdarzeń, z którymi możesz pracować, żeby ożywić swoje strony.

Ten artykuł nie jest kompletny i może być aktualizowany

Przypisanie funkcji do zdarzenia


javascript
var bouton = document.getElementById('click');

function MonAlert() {
  alert('hello world');
}

bouton.onclick = MonAlert;

Każda współczesna przeglądarka rozumie ten sposób przypisania funkcji do zdarzenia, ale do jednego zdarzenia podepniesz tylko jedną funkcję i nie przekażesz jej żadnych parametrów. Nawiasy trzeba pominąć, inaczej kod odpali się od razu.

Wada

Kiedy chcesz przypisać do jednego zdarzenia kilka funkcji, poprzednia zostaje nadpisana przez nową.

javascript
var bouton = document.getElementById('click');

function MonAlert() {
  alert('hello world!');
}

function AlertTOTO() {
  alert('Toto!')
}

bouton.onclick = MonAlert;
bouton.onclick = AlertTOTO;

W efekcie zobaczymy tylko komunikat Toto!.

Event Listener


Event listeners to nowocześniejsze podejście, które pozwala przypisać do jednego zdarzenia kilka funkcji naraz.

javascript
var bouton = document.getElementById('click');

function MonAlert() {
  alert('hello world!');
}

function AlertTOTO() {
  alert('Toto!');
}

bouton.addEventListener('click', MonAlert);
bouton.addEventListener('click', AlertTOTO);

Metoda addEventlistener() przyjmuje trzy parametry:
element.addEventlistener('evenement', NomDeFonction, Boolean);

  1. zdarzenie: nazwa zdarzenia, którego chcesz nasłuchiwać (blur, click i tak dalej);
  2. kod, który ma się wykonać, funkcja zadeklarowana wcześniej albo funkcja anonimowa,
  3. boolean sterujący propagacją zdarzenia, domyślnie false.

Wada

Ta metoda nie jest obsługiwana przez stare przeglądarki.

Przekazywanie parametrów


Widzieliśmy już, że przypisując funkcję do zdarzenia, nie możemy postawić nawiasów. Żeby mimo to przekazać parametry, tworzymy funkcję anonimową, przypisujemy ją do zdarzenia, a w środku wywołujemy własną funkcję z jej parametrami.

javascript
function MonAlert(message) {
  alert(message);
}

bouton.addEventListener('click', function() {
    MonAlert('Mon message qui s'affiche!');
});

Obiekt Event


Kiedy zdarzenie się wydarzy, powstaje obiekt zdarzenia, który zawiera informacje o samym zdarzeniu i o elemencie, na którym wystąpiło.

javascript
var bouton = document.getElementById('click');

function MonAlert(e) {
  console.log(e.target);
}

bouton.onclick = MonAlert;

Z event listenerem i parametrami

javascript
var bouton = document.getElementById('click');

function MonAlert(e, message) {
    console.log(e.target);
    console.log(message);
}

bouton.addEventListener('click', function(e){
    MonAlert(e, "hello world!");
});

Właściwości

Właściwość Opis
target Element, który wywołał zdarzenie
type Zdarzenie, które zostało wywołane

Metody

Metoda Opis
preventDefault() Anuluje domyślne zachowanie zdarzenia (o ile da się je anulować)
stopPropagation() Zatrzymuje propagację zdarzenia.

Lista zdarzeń

Oto krótka, nie wyczerpująca lista zdarzeń, które spotyka się regularnie.

Przeglądarka

Zdarzenie Opis
load Wywoływane, gdy przeglądarka skończy ładowanie. Może się też wywołać na innych wczytanych elementach, takich jak obrazy, skrypty czy obiekty.
unload odwrotność zdarzenia load, wywoływane przy opuszczaniu strony.
resize wywoływane, gdy użytkownik zmieni rozmiar okna przeglądarki.
scroll wywoływane, gdy użytkownik przewija stronę lub element.
error error wywoływane, gdy przeglądarka napotka błąd JavaScriptu.

Mysz

Zdarzenie Opis
click Wywoływane, gdy użytkownik kliknie element
dblclick To samo co click, ale przy szybkim podwójnym kliknięciu.
mouseup Wywoływane, gdy użytkownik przytrzyma przycisk myszy.
mousedown Wywoływane, gdy użytkownik puści przycisk myszy.
mousemove Wywoływane, gdy kursor się przemieszcza.
mouseover wywoływane, gdy kursor najedzie na element.
mouseout wywoływane, gdy kursor opuści element, nad którym się znajdował, albo jego element potomny.

Klawiatura

Zdarzenie Opis
input Wywoływane, gdy zmieni się wartość elementu <input> albo <textarea>.
keydown Wywoływane, gdy użytkownik naciśnie klawisz. Jeśli trzyma go wciśniętego, zdarzenie wywołuje się w kółko.
keypress Wywoływane, gdy użytkownik naciśnie klawisz, który wyświetliłby znak na ekranie. Nie wywoła się na przykład przy strzałkach, w odróżnieniu od keydown. Jeśli użytkownik trzyma klawisz wciśnięty, zdarzenie wywołuje się w kółko, tak jak keydown.
keyup Wywoływane, gdy użytkownik puści klawisz. Zdarzenia keydown i keypress wywołują się przed pojawieniem się znaku na ekranie, a keyup już po nim.

Sprawdzenie, który klawisz został naciśnięty

Dzięki obiektowi Event sprawdzisz, który klawisz został naciśnięty, sięgając po e.keycode, które zwraca kod ASCII klawisza.

Formularz

Zdarzenie Opis
submit Wywoływane, gdy użytkownik naciśnie przycisk zatwierdzający formularz.
change Wywoływane, gdy zmieni się stan kilku elementów formularza (radio, checkbox i select)

JavaScript

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty — e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.