Slabikář JavaScriptu – události myši a objekt Event
Dynamické HTML stránky téměř vždy obsahují programový kód JavaScriptu připojený k událostem, které mohou na stránce nastat. Aby bylo možné takové stránky tvořit, je nutné znát jejich význam. Podívejme se tedy na popis nejpoužívanějších událostí, které mohou nastat v HTML prohlížeči a na příklady jejich použití.
Před vlastním výkladem zdůrazněme, že událost může nastat vždy nad některým objektem dokumentu, tedy v souvislosti s nějakou činností, která se objektu týká. Takovým objektem může být okno prohlížeče (window), tělo – tag BODY – HTML dokumentu (document) nebo jakýkoli HTML objekt (formulář, tlačítko, tabulka, buňka tabulky, text uzavřený do tagu FONT, obrázek apod.).
Události a příslušná odezva na ně se definují většinou přímo v tagu objektu, k němuž je událost vázána. V názvech událostí se nerozlišují malá a velká písmena.
Událostmi myši rozumíme ty události, které vzniknou v souvislosti s tím, že uživatel používá myš (v některých případech i klávesnici). Tady je jejich seznam:
onClick (při klepnutí)
Tato událost nastává ve chvíli, kdy uživatel klepne myší nad příslušným objektem. Klepnutí se týká pouze levého tlačítka myši. Pokud uživatel použije pravé tlačítko, nastává událost onContextMenu
.
Následující příklad demonstruje použití obou vlastností v tagu FONT:
|
onDblClick (při poklepání)
Poklepáním se spustí událost ondblclick
. Její použití je stejné jako onclick
.
onMouseDown (při stlačení tlačítka myši)
Událost onMouseDown
nastává ve chvíli, kdy uživatel stlačí tlačítko myši – je libovolné zda levé nebo pravé.
onMouseUp (při uvolnění tlačítka myši)
Událost nastane ve chvíli, kdy uživatel uvolní tlačítko myši. Je logické, že někdy dříve již musela nastat událost onMouseDown
. Události onMouseDown
a onMouseOut
mohou nastat nad různými objekty. To je základ pro možnost programování technologie „drag and drop“. Bude uvedeno později.
onMouseMove (při pohybu myši)
Tato událost nastává kdykoli se kurzor myši pohybuje nad objektem, nad kterým je událost definovaná.
onMouseOut (při opuštění objektu)
Událost nastane ve chvíli, kdy kurzor myši opustí objekt, nad kterým se pohyboval. Jak bylo ukázáno v předcházejícím dílu Slabikáře, společně s onMouseOver
se používá pro zvýrazňování objektu, nad kterým se právě nachází kurzor.
onMouseOver (při vstupu na objekt)
Událost nastane ve chvíli, kdy uživatel posune kurzor nad objekt – tedy přesně v okamžiku, kdy kurzor překračuje hranici objektu. Ve skriptech se používá ve spojení s onMouseOut
.
Při programování je také důležité vědět, v jakém pořadí události nastanou. Pokud uživatel pohybuje kurzorem nad objekt, klepne na objekt a potom kurzor „odveze“ jinam, nastanou na tomto objektu události v následujícím pořadí:
- onMouseOver
- onMouseMove
- onMouseDown
- onMouseUp
- onClick
- onMouseMove
- onMouseOut
Správně naprogramovat technologii „drag and drop“ patří k těm těžším úlohám, se kterými se lze setkat. Je zapotřebí ošetřit velké množství možných událostí:
- „zvednutí“ objektu kurzorem myši
- „upuštění“ na správné místo
- „upuštění“ na nesprávné místo
- pokus o „upuštění“ ve chvíli, kdy objekt ještě nebyl „zvednut“
- korektní zobrazení přenášení objektu
- zničení původního objektu, pokud byl upuštěn na nové místo a další
Většinu popsaných problémů řeší následující funkční příklad, který berte jako inspiraci pro možné pozdější úpravy. Texty uzavřené do tagu FONT lze tažením myší umístit do seznamu SELECT v libovolném pořadí:
|
Při programování událostí lze výhodně využívat objekt event, který je součástí objektového modelu DOM (objekty, jejich metody a vlastnosti, které podporují internetové prohlížeče). Pokud se v HTML dokumentu vyskytne jakákoli událost, informace o ní se uloží do vlastností objektu event
. Podle hodnot těchto vlastností pak lze rozhodnout, jak událost ošetřit. Zde je stručný seznam těch nejpoužívanějších vlastností:
altKey, ctrlKey, shiftKey
Stlačení funkčních kláves ALT, CTRL a SHIFT nevyvolává žádnou událost. Proto je v těchto vlastnostech objektu event
vždy uložena Boolean hodnota, která udává, zda v okamžiku výskytu události byla nebo nebyla stlačena i příslušná klávesa.
button
V této vlastnosti je uložena hodnota typu integer
udávající, které tlačítko myši bylo v okamžiku vyvolání události stisknuto.
- 0 – žádné
- 1 – Levé tlačítko
- 2 – Pravé tlačítko
- 4 – Střední tlačítko
Součtem těchto čísel se identifikuje současné stisknutí více tlačítek.
fromElement, toElement
Obě vlastnosti se používají pouze v souvislosti s událostmi onMouseOver
a onMouseOut
. Obě události nastávají ve chvíli, kdy kurzor vstupuje nebo opouští objekt. V takových případech uvedené vlastnosti obsahují odkaz na objekt z kterého, resp. na který se kurzor přesunul.
Pro názornost vyzkoušejte následující příklad a zkuste najíždět kurzorem na tlačítko Beta. Ve stavovém řádku prohlížeče se bude zobrazovat typ tagu, z něhož na toto tlačítko kurzor vstoupil:
|
keyCode
Obsahuje UNICODE znaku, který byl stlačen na klávesnici, pakliže se jedná o událost klávesnice returnValue
(velice důležitá hodnota). Jejím nastavením na hodnotu false
lze zrušit implicitní odezvu na událost. Například pokud klepne uživatel myší na hypertextový odkaz, provede se nejdříve tělo události onClick
(pokud je definováno), a pak se teprve provede přesměrování na URL uložené v atributu HREF. Pokud tělo funkce připojené k události onClick
bude obsahovat event.returnValue=false
, přesměrování neproběhne.
srcElement
Vlastnost obsahuje odkaz na objekt, nad kterým událost vznikla.
type
Obsahuje textově popis události, která nastala – např. „click“ při události onClick
apod.
screenX, screenY
X-ové a y-ové souřadnice kurzoru myši ve chvíli, kdy událost nastala. Jsou vztaženy k levému hornímu rohu okna prohlížeče.
Používání objektu event
může velmi usnadnit psaní skriptů například tím, že není nutné definovat odezvu na událost do každého tagu, kde ji chceme mít. To demonstruje poslední dnešní příklad. Funkce Udalost se spustí pokaždé, když uživatel klepne na plochu dokumentu nebo kterýkoli z HTML objektů. Teprve ve funkci se pozná, nad kterým objektem událost nastala, a podle toho lze řídit další ošetření události:
|
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
Jak si vyzkoušet Apple Intelligence v EU
2. srpna 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024