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>