Przejdź do treści

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.

ZdarzenieAtrybutZastosowanieOpis
DOMContentLoaded-DocumentUruchamia się, gdy parser zakończy przetwarzanie dokumentu Document.
afterprintonafterprintWindowUruchamia się w Window po zakończeniu drukowania.
beforeprintonbeforeprintWindowUruchamia się w Window przed rozpoczęciem drukowania.
beforematchonbeforematchElementyUruchamia się na elementach z atrybutem hidden=until-found przed ich ujawnieniem.
beforetoggleonbeforetoggleElementyUruchamia się na elementach z atrybutem popover, gdy przechodzą z widocznego na ukryty stan lub odwrotnie.
beforeunloadonbeforeunloadWindowUruchamia się w Window, gdy strona ma zostać zamknięta, umożliwiając wyświetlenie ostrzeżenia.
bluronblurElementy, WindowUruchamia się na węzłach, gdy przestają być one fokusowane.
canceloncancelElementy CloseWatcher, dialog, inputUruchamia się na obiektach CloseWatcher lub elementach dialog, gdy otrzymują żądanie zamknięcia, lub na elementach input, gdy nie dokonano zmiany wyboru pliku.
changeonchangeElementy formularzaUruchamia się, gdy użytkownik zmienia wartość formularza (patrz również zdarzenie input).
clickonclickElementyNormalnie 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).
closeoncloseElementy CloseWatcher, dialog, MessagePortUruchamia się na obiektach CloseWatcher lub elementach dialog, gdy są one zamykane za pomocą żądania lub kodu, lub na obiektach MessagePort po rozłączeniu.
commandoncommandElementyUruchamia się na elementach, gdy obsługują one wywołanie przez użytkownika za pomocą atrybutu commandfor.
connect-SharedWorkerGlobalScopeUruchamia się, gdy nowy klient łączy się z globalnym zakresem współdzielonego pracownika.
contextlostoncontextlostElementy canvas, obiekty OffscreenCanvasUruchamia się, gdy kontekst renderowania CanvasRenderingContext2D lub OffscreenCanvasRenderingContext2D zostaje utracony.
contextrestoredoncontextrestoredElementy canvas, obiekty OffscreenCanvasUruchamia się, gdy kontekst renderowania CanvasRenderingContext2D lub OffscreenCanvasRenderingContext2D zostaje przywrócony po utracie.
currententrychange-NavigationUruchamia się, gdy zmienia się navigation.currentEntry.
dispose-NavigationHistoryEntryUruchamia się, gdy wpis historii sesji związany z NavigationHistoryEntry zostaje trwale usunięty z historii sesji i nie można do niego już przejść.
erroronerrorObiekty 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).
focusonfocusElementy, WindowUruchamia się na węzłach, które zyskują fokus.
formdataonformdataElementy formUruchamia się na elemencie form, gdy jest tworzona lista wpisów formularza.
hashchangeonhashchangeWindowUruchamia się w Window, gdy fragment URL dokumentu się zmienia.
inputoninputElementyUruchamia się, gdy użytkownik zmienia zawartość elementu contenteditable lub wartość kontrolki formularza. Patrz również zdarzenie change dla kontrolek formularza.
invalidoninvalidElementy formularzaUruchamia się na kontrolkach formularza podczas walidacji, gdy nie spełniają one swoich ograniczeń.
languagechangeonlanguagechangeObiekty globalneUruchamia się na obiektach globalnych, gdy zmieniają się preferencje językowe użytkownika.
loadonloadWindow, elementyUruchamia 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.
messageonmessageWindow, EventSource, MessagePort, BroadcastChannel, DedicatedWorkerGlobalScope, Worker, ServiceWorkerContainerUruchamia się na obiekcie, gdy otrzymuje on wiadomość.
Zdarzenia multimedialne
loadstartonloadstartaudio i videoAgent użytkownika rozpoczyna wyszukiwanie danych multimedialnych jako część algorytmu wyboru zasobów.
progressonprogressaudio i videoAgent użytkownika pobiera dane multimedialne.
suspendonsuspendaudio i videoAgent użytkownika celowo nie pobiera obecnie danych multimedialnych.
abort-audio i videoAgent użytkownika przestaje pobierać dane multimedialne przed ich całkowitym załadowaniem, ale nie z powodu błędu.
erroronerroraudio i videoWystępuje błąd podczas pobierania danych multimedialnych lub typ zasobu nie jest obsługiwanym formatem multimedialnym.
emptiedonemptiedaudio i videoElement multimedialny przechodzi do stanu NETWORK_EMPTY z innego stanu.
stalledonstalledaudio i videoAgent użytkownika próbuje pobierać dane multimedialne, ale dane nie są dostępne tak jak oczekiwano.
loadedmetadataonloadedmetadataaudio i videoAgent użytkownika właśnie określił czas trwania i wymiary zasobu multimedialnego, a ścieżki tekstowe są gotowe.
loadeddataonloadeddataaudio i videoAgent użytkownika po raz pierwszy może odtworzyć dane multimedialne w bieżącym położeniu odtwarzania.
canplayoncanplayaudio i videoAgent użytkownika może wznowić odtwarzanie, ale szacuje, że nie dotrwa do końca bez buforowania.
canplaythroughoncanplaythroughaudio i videoAgent użytkownika szacuje, że odtworzy zasób do końca bez konieczności dalszego buforowania.
playingonplayingaudio i videoOdtwarzanie jest gotowe do rozpoczęcia po wstrzymaniu lub opóźnieniu spowodowanym brakiem danych.
waitingonwaitingaudio i videoOdtwarzanie zostało zatrzymane, ponieważ kolejna klatka nie jest dostępna, ale agent użytkownika oczekuje jej pojawienia się.
seekingonseekingaudio i videoRozpoczęto przewijanie do nowej pozycji - atrybut seeking zmienia się na true.
seekedonseekedaudio i videoPrzewijanie zakończone - atrybut seeking zmienia się na false.
endedonendedaudio i videoOdtwarzanie zakończyło się, bo osiągnięto koniec zasobu.
durationchangeondurationchangeaudio i videoAtrybut duration został właśnie zaktualizowany.
timeupdateontimeupdateaudio i videoPozycja odtwarzania zmieniła się jako część normalnego odtwarzania lub w sposób szczególny.
playonplayaudio i videoElement nie jest już wstrzymany - odtwarzanie rozpoczęło się.
pauseonpauseaudio i videoElement został wstrzymany.
ratechangeonratechangeaudio i videoAtrybut defaultPlaybackRate lub playbackRate został zaktualizowany.
resizeonresizeaudio i videoZaktualizowano jeden z atrybutów videoWidth lub videoHeight.
volumechangeonvolumechangeaudio i videoZmieniono atrybut volume lub muted.
erroronerrorsourceWystąpił błąd podczas pobierania danych multimedialnych lub format nie jest obsługiwany.
erroronerrorAudioTrackList, VideoTrackList, TextTrackListWystąpił błąd podczas pobierania danych multimedialnych lub format nie jest obsługiwany.
cuechangeoncuechangeTextTrack, trackJedna lub więcej etykiet (cue) w ścieżce stała się aktywna lub przestała być aktywna.
erroronerrortrackWystąpił błąd podczas pobierania danych ścieżki lub format ścieżki tekstowej nie jest obsługiwany.
loadonloadtrackDane ścieżki zostały pobrane i poprawnie przetworzone.
enter-TextTrackCueEtykieta (cue) stała się aktywna.
exit-TextTrackCueEtykieta (cue) przestała być aktywna.
Zdarzenia drag-and-drop
dragstartondragstartElement źródłowyUżytkownik rozpoczyna przeciąganie elementu.
dragondragElement źródłowyElement jest przeciągany.
dragenterondragenterBezpośrednio wskazany element lub element bodyPrzeciągany element wchodzi w obszar docelowy.
dragleaveondragleavePoprzedni element docelowyPrzeciągany element opuszcza obszar docelowy.
dragoverondragoverBieżący element docelowyPrzeciągany element znajduje się nad obszarem docelowym (zdarzenie Uruchamia się wielokrotnie).
dropondropBieżący element docelowyPrzeciągany element zostaje upuszczony na docelowy obszar.
dragendondragendElement źródłowyKończy się operacja przeciągania (niezależnie od tego, czy zakończyła się upuszczeniem).

Żródło: HTML Standard

Komentarze

Zobacz więcej komentarzy

Facebook