Zdarzenia HTML5
Jakie są rodzaje zdarzeń HTML5 i do czego służą?
Zdarzenie HTML to określona sytuacja lub akcja, która zachodzi w interfejsie użytkownika i może wywołać reakcję przeglądarki lub skryptu (JavaScript). Przykładami zdarzeń są kliknięcie myszą, załadowanie strony, zmiana wartości w formularzu czy rozpoczęcie odtwarzania pliku multimedialnego. Zdarzenia pozwalają tworzyć dynamiczne i interaktywne strony internetowe, reagujące na działania użytkownika.
Zdarzenia w HTML można przypisywać bezpośrednio do elementów jako atrybuty, dodając przedrostek on
przed nazwą zdarzenia. Na przykład, aby wykonać akcję po kliknięciu przycisku, można użyć atrybutu onclick="..."
:
<button onclick="alert('Kliknięto przycisk!')">Kliknij mnie</button>
W przypadku gdy wybrane zdarzenie nie posiada odpowiadającego mu atrybutu (patrz tabela poniżej), można się posłużyć znacznikiem <script>...</script>
. Wpisuje się w nim bezpośrednio kod JavaScript nasłuchujący na uruchomienie się zdarzenia dla obiektu, do którego ma ono zastosowanie:
<script> document.addEventListener('DOMContentLoaded', function () { alert('Nastąpiło załadowanie wszystkich znaczników dokumentu HTML'); }); </script>
Każdy element oraz inne obiekty występujące w języku HTML mają ściśle określoną listę zdarzeń, które obsługują. Poniżej przedstawiono trzy główne grupy zdarzeń dostępnych w HTML5:
- Podstawowe zdarzenia - związane z ogólną interakcją użytkownika z elementami strony, np. klikaniem lub zmianą wartości.
- Zdarzenia multimedialne - wywoływane podczas odtwarzania audio i wideo, np. gdy rozpoczyna się lub kończy odtwarzanie.
- Zdarzenia drag-and-drop - umożliwiają implementację przeciągania i upuszczania elementów w obrębie strony.
Zdarzenia te stanowią podstawę dla budowy bardziej dynamicznych i responsywnych interfejsów użytkownika. Poniższa tabela zawiera zestawienie nazw zdarzeń, odpowiadających im atrybutów (jeśli występują), elementów i obiektów do których mają one zastosowanie oraz opisu momentu ich uruchomienia.
Zdarzenie | Atrybut | Zastosowanie | Opis |
---|---|---|---|
DOMContentLoaded | - | Document | Uruchamia się, gdy parser zakończy przetwarzanie dokumentu Document . |
afterprint | onafterprint | Window | Uruchamia się w Window po zakończeniu drukowania. |
beforeprint | onbeforeprint | Window | Uruchamia się w Window przed rozpoczęciem drukowania. |
beforematch | onbeforematch | Elementy | Uruchamia się na elementach z atrybutem hidden=until-found przed ich ujawnieniem. |
beforetoggle | onbeforetoggle | Elementy | Uruchamia się na elementach z atrybutem popover , gdy przechodzą z widocznego na ukryty stan lub odwrotnie. |
beforeunload | onbeforeunload | Window | Uruchamia się w Window , gdy strona ma zostać zamknięta, umożliwiając wyświetlenie ostrzeżenia. |
blur | onblur | Elementy, Window | Uruchamia się na węzłach, gdy przestają być one fokusowane. |
cancel | oncancel | Elementy CloseWatcher , dialog , input | Uruchamia się na obiektach CloseWatcher lub elementach dialog , gdy otrzymują żądanie zamknięcia, lub na elementach input, gdy nie dokonano zmiany wyboru pliku. |
change | onchange | Elementy formularza | Uruchamia się, gdy użytkownik zmienia wartość formularza (patrz również zdarzenie input). |
click | onclick | Elementy | Normalnie jest to zdarzenie myszy; wywoływane również sztucznie na elemencie przed uruchomieniem jego aktywacji, gdy element jest aktywowany za pomocą urządzenia wejściowego, które nie jest wskaźnikiem (np. klawiatura). |
close | onclose | Elementy CloseWatcher , dialog , MessagePort | Uruchamia się na obiektach CloseWatcher lub elementach dialog , gdy są one zamykane za pomocą żądania lub kodu, lub na obiektach MessagePort po rozłączeniu. |
command | oncommand | Elementy | Uruchamia się na elementach, gdy obsługują one wywołanie przez użytkownika za pomocą atrybutu commandfor . |
connect | - | SharedWorkerGlobalScope | Uruchamia się, gdy nowy klient łączy się z globalnym zakresem współdzielonego pracownika. |
contextlost | oncontextlost | Elementy canvas , obiekty OffscreenCanvas | Uruchamia się, gdy kontekst renderowania CanvasRenderingContext2D lub OffscreenCanvasRenderingContext2D zostaje utracony. |
contextrestored | oncontextrestored | Elementy canvas , obiekty OffscreenCanvas | Uruchamia się, gdy kontekst renderowania CanvasRenderingContext2D lub OffscreenCanvasRenderingContext2D zostaje przywrócony po utracie. |
currententrychange | - | Navigation | Uruchamia się, gdy zmienia się navigation.currentEntry . |
dispose | - | NavigationHistoryEntry | Uruchamia się, gdy wpis historii sesji związany z NavigationHistoryEntry zostaje trwale usunięty z historii sesji i nie można do niego już przejść. |
error | onerror | Obiekty globalne, elementy Worker , obiekty związane z siecią | Uruchamia się, gdy wystąpią niespodziewane błędy (np. błędy sieciowe, błędy skryptów, błędy dekodowania). |
focus | onfocus | Elementy, Window | Uruchamia się na węzłach, które zyskują fokus. |
formdata | onformdata | Elementy form | Uruchamia się na elemencie form, gdy jest tworzona lista wpisów formularza. |
hashchange | onhashchange | Window | Uruchamia się w Window , gdy fragment URL dokumentu się zmienia. |
input | oninput | Elementy | Uruchamia się, gdy użytkownik zmienia zawartość elementu contenteditable lub wartość kontrolki formularza. Patrz również zdarzenie change dla kontrolek formularza. |
invalid | oninvalid | Elementy formularza | Uruchamia się na kontrolkach formularza podczas walidacji, gdy nie spełniają one swoich ograniczeń. |
languagechange | onlanguagechange | Obiekty globalne | Uruchamia się na obiektach globalnych, gdy zmieniają się preferencje językowe użytkownika. |
load | onload | Window , elementy | Uruchamia się w Window , gdy dokument zakończył ładowanie; wydarzają się także na elementach zawierających zasób (np. img, embed), gdy zasób został załadowany. |
message | onmessage | Window , EventSource , MessagePort , BroadcastChannel , DedicatedWorkerGlobalScope , Worker , ServiceWorkerContainer | Uruchamia się na obiekcie, gdy otrzymuje on wiadomość. |
Zdarzenia multimedialne | |||
loadstart | onloadstart | audio i video | Agent użytkownika rozpoczyna wyszukiwanie danych multimedialnych jako część algorytmu wyboru zasobów. |
progress | onprogress | audio i video | Agent użytkownika pobiera dane multimedialne. |
suspend | onsuspend | audio i video | Agent użytkownika celowo nie pobiera obecnie danych multimedialnych. |
abort | - | audio i video | Agent użytkownika przestaje pobierać dane multimedialne przed ich całkowitym załadowaniem, ale nie z powodu błędu. |
error | onerror | audio i video | Występuje błąd podczas pobierania danych multimedialnych lub typ zasobu nie jest obsługiwanym formatem multimedialnym. |
emptied | onemptied | audio i video | Element multimedialny przechodzi do stanu NETWORK_EMPTY z innego stanu. |
stalled | onstalled | audio i video | Agent użytkownika próbuje pobierać dane multimedialne, ale dane nie są dostępne tak jak oczekiwano. |
loadedmetadata | onloadedmetadata | audio i video | Agent użytkownika właśnie określił czas trwania i wymiary zasobu multimedialnego, a ścieżki tekstowe są gotowe. |
loadeddata | onloadeddata | audio i video | Agent użytkownika po raz pierwszy może odtworzyć dane multimedialne w bieżącym położeniu odtwarzania. |
canplay | oncanplay | audio i video | Agent użytkownika może wznowić odtwarzanie, ale szacuje, że nie dotrwa do końca bez buforowania. |
canplaythrough | oncanplaythrough | audio i video | Agent użytkownika szacuje, że odtworzy zasób do końca bez konieczności dalszego buforowania. |
playing | onplaying | audio i video | Odtwarzanie jest gotowe do rozpoczęcia po wstrzymaniu lub opóźnieniu spowodowanym brakiem danych. |
waiting | onwaiting | audio i video | Odtwarzanie zostało zatrzymane, ponieważ kolejna klatka nie jest dostępna, ale agent użytkownika oczekuje jej pojawienia się. |
seeking | onseeking | audio i video | Rozpoczęto przewijanie do nowej pozycji - atrybut seeking zmienia się na true . |
seeked | onseeked | audio i video | Przewijanie zakończone - atrybut seeking zmienia się na false . |
ended | onended | audio i video | Odtwarzanie zakończyło się, bo osiągnięto koniec zasobu. |
durationchange | ondurationchange | audio i video | Atrybut duration został właśnie zaktualizowany. |
timeupdate | ontimeupdate | audio i video | Pozycja odtwarzania zmieniła się jako część normalnego odtwarzania lub w sposób szczególny. |
play | onplay | audio i video | Element nie jest już wstrzymany - odtwarzanie rozpoczęło się. |
pause | onpause | audio i video | Element został wstrzymany. |
ratechange | onratechange | audio i video | Atrybut defaultPlaybackRate lub playbackRate został zaktualizowany. |
resize | onresize | audio i video | Zaktualizowano jeden z atrybutów videoWidth lub videoHeight . |
volumechange | onvolumechange | audio i video | Zmieniono atrybut volume lub muted . |
error | onerror | source | Wystąpił błąd podczas pobierania danych multimedialnych lub format nie jest obsługiwany. |
error | onerror | AudioTrackList , VideoTrackList , TextTrackList | Wystąpił błąd podczas pobierania danych multimedialnych lub format nie jest obsługiwany. |
cuechange | oncuechange | TextTrack , track | Jedna lub więcej etykiet (cue) w ścieżce stała się aktywna lub przestała być aktywna. |
error | onerror | track | Wystąpił błąd podczas pobierania danych ścieżki lub format ścieżki tekstowej nie jest obsługiwany. |
load | onload | track | Dane ścieżki zostały pobrane i poprawnie przetworzone. |
enter | - | TextTrackCue | Etykieta (cue) stała się aktywna. |
exit | - | TextTrackCue | Etykieta (cue) przestała być aktywna. |
Zdarzenia drag-and-drop | |||
dragstart | ondragstart | Element źródłowy | Użytkownik rozpoczyna przeciąganie elementu. |
drag | ondrag | Element źródłowy | Element jest przeciągany. |
dragenter | ondragenter | Bezpośrednio wskazany element lub element body | Przeciągany element wchodzi w obszar docelowy. |
dragleave | ondragleave | Poprzedni element docelowy | Przeciągany element opuszcza obszar docelowy. |
dragover | ondragover | Bieżący element docelowy | Przeciągany element znajduje się nad obszarem docelowym (zdarzenie Uruchamia się wielokrotnie). |
drop | ondrop | Bieżący element docelowy | Przeciągany element zostaje upuszczony na docelowy obszar. |
dragend | ondragend | Element źródłowy | Kończy się operacja przeciągania (niezależnie od tego, czy zakończyła się upuszczeniem). |
Żródło: HTML Standard