JavaScript - DOM Events - zdarzenia
Sposoby dołączania zdarzenia do elementu:
1. Procedury obsługi zdarzeń w atrybutach HTML.
<znacznik zdarzenie="instrukcja">
lub
<znacznik zdarzenie="nazwaFunkcji()">
Ad 1.1
<button onclick="alert('Przycisk został kliknięty.');">Kliknij w ten przycisk</button>
wyświetl przykład
Ad 1.2
<button onclick="myFunction()">Kliknij w ten przycisk</button>
<script type="text/javascript">
function myFunction() {
alert('Przycisk został kliknięty.');
}
</script>
wyświetl przykład
2. Tradycyjne procedury obsługi zdarzeń w modelu DOM.
Do tego sposób obsługi zdarzeń można przypisać tylko jedną funkcję.element.onzdarzenie = nazwaFunkcji;
| element | element | Węzeł elementu w modelu DOM |
| onzdarzenie | zdarzenie | poprzedzone przedrostkiem on zdarzenie dołączone do węzła. |
| nazwaFunkcji | kod | nazwa funkcji przyłączonej do węzła (bez nawiasu na końcu) |
Ad 2
<button id="klik">Kliknij w ten przycisk</button>
<script type="text/javascript">
function myFunction() {
alert('Przycisk został kliknięty.');
}
var el = document.getElementById('klik');
el.onclick = myFunction;
</script>
wyświetl przykład
3. Obserwatory zdarzeń (DOM LEVEL 2).
Do tego sposób obsługi zdarzeń można przypisać wiele funkcji.element.addEventListener('zdarzenie', nazwaFunkcji [, wartość_bolowska]);
element - element - Węzeł elementu w modelu DOM.
.addEventListener('zdarzenie', nazwaFunkcji [, wartość_bolowska]) - metoda - dodaje ona obserwatora zdarzeń do węzła elementu w modelu DOM.
'zdarzenie' - zdarzenie - Zdarzenie dołączone do węzła, ujęte w znaki cytowania.
nazwaFunkcji - kod - Nazwa funkcji przeznaczonej do wywołania.
[, wartość_bolowska] - przepływ zdarzeń - wskazuje sposób przepływu zdarzeń. Najczęściej ma przepisaną wartość false.
Ad 3
<button id="klik">Kliknij w ten przycisk</button>
<script type="text/javascript">
function myFunction() {
alert('Przycisk został kliknięty.');
}
var el = document.getElementById('klik');
el.addEventListener('click', myFunction, false);
</script>
wyświetl przykład
Zdarzenia interfejsu użytkownika (User Interface) - są skutkiem interakcji z oknem przeglądarki a nie wyświetlaną przez nią stroną.
| zdarzenie | opis |
|---|---|
| onload | Zakończenie wczytywania dokumentu (tylko BODY i FRAMESET) |
| onunload | Usunięcie dokumentu (tylko BODY i FRAMESET) |
| onerror | Przeglądarka internetowa napotyka błąd lub gdy zasób nie istnieje. |
| onresize | Zmiana wielkości okna przeglądarki internetowej. |
| onscroll | Przewinięcie zawartości okna w górę lub w dół. |
Zdarzenia klawiatury - interakcja z klawiaturą.
| zdarzenie | opis |
|---|---|
| onkeydown | Wciśnięcie klawisza |
| onkeypress | Wciśnięcie lub przytrzymanie klawisza. |
| onkeyup | Zwolnienie klawisza |
Zdarzenia myszy - interakcja z myszą, gładzikiem lub ekranem dotykowym.
| zdarzenie | opis |
|---|---|
| onclick | Kliknięcie myszką |
| ondblclick | Podwójne kliknięcie myszką |
| onmousedown | Wciśnięcie dowolnego klawisza myszki |
| onmouseup | Zwolnienie klawisza myszki |
| onmousemove | Poruszanie myszką nad elementem |
| onmouseover | Wskazanie myszką |
| onmouseout | Wskaźnik myszki opuszcza element |
Zdarzenia aktywności
Jeżeli z danym elementem HTML można prowadzić interakcję, to element ten może stać się aktywny lub nieaktywny.
Klawiszem Tab można poruszać się pomiędzy elementami które mogą być aktywne.
| zdarzenie | opis |
|---|---|
| onblur | Element traci zogniskowanie (przeciwne do onfocus) |
| onfocus | Element otrzymuje zogniskowanie (aktywność) przez myszkę lub klawiszem TAB (obsługiwane przez: A, AREA, LABEL, INPUT, SELECT, TEXTAREA i BUTTON) |
| zdarzenie | wywołanie | przepływ zdarzeń |
|---|---|---|
| onblur | Kiedy element staje się nieaktywny, dla jego węzła DOM jest wywoływane zdarzenie blur The event occurs when an element loses focus |
przechwytywanie |
| onfocus | Kiedy element staje się aktywny, dla jego węzła DOM jest wywoływane zdarzenie focus The event occurs when an element gets focus |
przechwytywanie |
| onfocusin | The event occurs when an element is about to get focus | przechwytywanie i propagowanie |
| onfocusout | The event occurs when an element is about to lose focus | przechwytywanie i propagowanie |
Zdarzenia formularzy sieciowych - występują gdy prowadzimy interakcje z elementami formularza sieciowego.
| zdarzenie | opis |
|---|---|
| onchange | Element został zmodyfikowany i utracił zogniskowanie (tylko INPUT, SELECT i TEXTAREA) |
| oncopy | Skopiowanie zawartości z pola formularza sieciowego. |
| oncut | Wycięcie zawartości z pola formularza sieciowego. |
| oninput | Zmianie ulega wartość w dowolnym elemencie <input>>lub <textarea> |
| onpaste | Wklejenie zawartości do pola formularza sieciowego. |
| onreset | Wyczyszczenie formularza (tylko element FORM) |
| onselect | Użytkownik zaznaczył pewien tekst w polu tekstowym (tylko INPUT i TEXTAREA) |
| onsubmit | Wysłanie formularza sieciowego (tylko element FORM) |
Zdarzenia dotyczące zmian - występują gdy nastąpi zmiana struktury modelu DOM.
| DOMAttrModified | |
| DOMAttributeNameChanged | |
| DOMCharacterDataModified | |
| DOMElementNameChanged | |
| DOMNodeInserted | Węzeł został wstawiony jako bezpośredni element potomny innego węzła. |
| DOMNodeInsertedIntoDocument | Węzeł został wstawiony jako element potomny inndgo węzła. |
| DOMNodeRemoved | Węzeł został usunięty z innego węzła. |
| DOMNodeRemovedFromDocument | Węzeł został usunięty jako element potomny innego węzła. |
| DOMSubtreeModified | Wprowadzono zmianę w dokumencie. |
Zdarzenie onload
Zdarzenie onload powstaje, kiedy strona WWW jest wczytywana do przeglądarki i powinno być przypisane do znacznika body.
<body onload="procedura_obsługi">
np.:
<body onload="alert('Strona została załadowana.');">
wyświetl przykład
Funkcja jako procedura obsługi zdarzenia.
<head>
<script type="text/javascript">
function wyswietl()
{
alert('Strona została załadowana.');
}
</script>
</head>
<body onload="wyswietl();">
wyświetl przykład
Przypisanie dwóch zdarzeń do znacznika.
<body
onload="alert('Strona została załadowana.');"
onunload="alert('Właśnie opuszczasz stronę.');"
>
Zdarzenie onresize
<body onresize="alert('Nastąpiła zmiana wielkości okna przeglądarki internetowej.');">
wyświetl przykład
Zdarzenie onscroll
<body onscroll="alert('Przewinięcie zawartości strony w górę lub w dół.');">
wyświetl przykład
Zdarzenie onclick
<button onclick="alert('Przycisk został kliknięty.');">Kliknij w ten przycisk.</button>
wynik skryptu
<head>
<script type="text/javascript">
function klikniecie() {
alert('Przycisk został kliknięty.');
}
</script>
</head>
<button onclick="klikniecie()">Kliknij w ten przycisk.</button>
wyświetl przykład
<button id="klik">Kliknij w ten przycisk.</button>
<script type="text/javascript">
function klikniecie() {
alert('Przycisk został kliknięty.');
}
var el = document.getElementById('klik');
el.onclick = klikniecie;
</script>
wyświetl przykład
Zdarzenie ondblclick
<button ondblclick="alert('Przycisk został dwukrotnie kliknięty.')">Kliknij dwukrotnie w ten przycisk.</button>
wynik skryptu
<head>
<script type="text/javascript">
function podwojneKlikniecie() {
alert('Przycisk został dwukrotnie kliknięty.');
}
</script>
</head>
<button ondblclick="podwojneKlikniecie()">Kliknij dwukrotnie w ten przycisk.</button>
wyświetl przykład
<button id="dblklik">Kliknij dwukrotnie w ten przycisk.</button>
<script type="text/javascript">
function podwojneKlikniecie() {
alert('Przycisk został dwukrotnie kliknięty.');
}
var el = document.getElementById('dblklik');
el.ondblclick = podwojneKlikniecie;
</script>
wyświetl przykład
Akapit tekstowy jako odnośnik.
<p onclick="location.assign('https://hedonskate.com/')" style="cursor:pointer">hedonskate.com</p>
<p onclick="location.assign('https://bladeville.pl/')">bladeville.pl</p>
łapka nad odnośnikiem:
style="cursor:pointer"
Akapit tekstowy jako odnośnik 2.
<script type="text/javascript">
var adresy = Array
(
"https://hedonskate.com/",
"https://bladeville.pl/"
)
function zmienStrone(number)
{
if(number >= 0 && number < adresy.length){
location.assign(adresy[number]);
}
}
</script>
<p onclick="zmienStrone(0);" style="cursor:pointer">hedonskate.com</p>
<p onclick="zmienStrone(1);" style="cursor:pointer">bladeville.pl</p>