Počítače Okna Internet

Dokumentujte události javascriptu. JavaScript - Typy událostí. Připojte události ke správným prvkům

Téma akcí je velmi důležité a velmi zajímavé. Díky ní můžete dělat spoustu zajímavých věcí, které uživatele potěší. JavaScript událost je specifická akce, kterou spouští buď uživatel, nebo prohlížeč. Událostí může být například kliknutí myší na tlačítko, pohyb myši, zaměření na prvek, změna hodnoty v nějakém textovém poli, změna velikosti okna prohlížeče a podobně.

Připravil jsem tabulku se všemi událostmi (které alespoň znám). JavaScript... Naleznete v něm jednak název události, prvky, které mohou tuto událost generovat a popis samotné události. Události JavaScriptu.

událost Objekt Příčina výskytu
PřerušitobrazPřerušení načítání obrázku
RozmazatZtráta zaměření prvku
ZměnaFileUpload, Select, Text, TextareaZměna hodnoty
KlikněteOblast, Tlačítko, Zaškrtávací políčko, Dokument, Odkaz, Rádio, Resetovat, OdeslatKlikněte myší na prvek
DblClickOblast, Dokument, OdkazDvakrát klikněte na prvek
DragDropOknoPřejít do okna prohlížeče
Soustředit seTlačítko, Zaškrtávací políčko, Nahrání souboru, Rám, Vrstva, Heslo, Rádio, Resetovat, Vybrat, Odeslat, Text, Textová oblast, OknoNastavení fokusu na prvek
KeyDownStisknutí klávesy na klávesnici
KeyPressDokument, obrázek, odkaz, textová oblastDržení klávesy na klávesnici
KeyUpDokument, obrázek, odkaz, textová oblastUvolnění klávesy na klávesnici
ZatíženíDokument, Obrázek, Vrstva, Okno
Myší dolůTlačítko, dokument, odkazStisknuto tlačítko myši
MouseMoveOknoMyš v pohybu
MouseOutOblast, Vrstva, OdkazMyš je mimo hranice prvku
Přejet myšíOblast, Vrstva, OdkazMyš je nad prvkem
MouseUpTlačítko, dokument, odkazTlačítko myši uvolněno
Přestěhovat seRámPřesouvání položky
ResetovatFormulářResetování formuláře
Změnit velikostRám, OknoZměna velikosti
VybratText, TextareaVýběr textu
PředložitFormulářPřenos dat
VyložitOknoUvolnění aktuální stránky

Teď pojďme zjistit jak používat události v JavaScriptu... Existují tzv manipulátory událostí. Obslužné programy událostí stačí určit, co se stane, když dojde k určité události. Obslužné rutiny událostí JavaScriptu má následující obecný tvar:

OnNameEvents

To znamená, že nejprve přichází předpona " na“, tak co bude dál název události, například takový manipulátory událostí: onFocus, při kliknutí, na Odeslat atd. Myslím, že zde nebyly žádné otázky. A teď hlavní otázka: " Jak mohu používat události v JavaScriptu?". Oblast jejich použití je obrovská a nyní s vámi zvážíme jeden problém. Na stránce jsou tři odkazy. Každý z odkazů je zodpovědný za jinou barvu pozadí (například bílá, žlutá a zelená ). Zpočátku je pozadí bílé. Když najedete myší na určitý odkaz, změní se barva pozadí. Po najetí myší se barva pozadí vrátí na výchozí. Po kliknutí myší na odkaz se barva pozadí zachová jako výchozí.







Bílý
Žlutá
Zelená

Pojďme se zabývat tímto scénářem, respektive celým HTML stránku s podporou JavaScript a CSS(jinými slovy, toto je příklad DHTML). Na prvním místě jsou ty obvyklé HTML tagy, kterým každý začíná HTML stránku... Dále vytvoříme styl, ve kterém požadujeme, aby všechny odkazy na této stránce byly modré, podtržené a aby na nich byl ukazatel myši ve tvaru „Ukazatel“. Možná si řeknete: "Proč potřebujete nastavit styl? Koneckonců, odkazy budou stejně úplně stejné." To je pravda, odkazy, ale odkazy jako takové nemáme (koneckonců neexistuje žádný atribut href ve značce), takže ve výchozím nastavení budou prostý černý text (i když na text můžete kliknout také). Styl je proto nutností. Můžete jej odstranit a uvidíte, co se stane. Ještě lépe řečeno atribut href(jakákoli hodnota, i prázdná) a vysvětlete, proč skript přestal fungovat. Dále už to začíná JavaScript... Vytvoříme proměnnou výchozí_barva který je zodpovědný za výchozí barvu. Pak existují tři funkce:

Funkce setTempColor () zodpovědný za dočasnou změnu barvy.

Funkce setDefaultColor () zodpovědný za změnu výchozí barvy.

Funkce výchozí barva () nastaví výchozí barvu pozadí.

Dále jsou ve formuláři odkazy s atributy manipulátory událostí... Když najedete myší na odkaz, Událost MouseOver, resp. obsluha události onMouseOver volá funkci setTempColor () a předá odpovídající parametr. Když odeberete myš z prvku, Událost MouseOut a pak zavolal funkce defaultColor ()., díky čemuž je barva pozadí výchozí. A nakonec, když kliknete na odkaz ( obslužný program onClick) funkce se volá setDefaultColor (), který nastaví barvu zadanou v parametru na výchozí barvu pozadí. Jak vidíte, vše je docela jednoduché.

to bylo princip použití událostí v JavaScriptu, a pak už vše záleží jen na vaší fantazii!

Schopnost JavaScriptu vytvářet dynamické html stránky je založena na třech pilířích. Dvěma z nich jsme se již věnovali v předchozích článcích. A třetí jsou události.

  • Správa oken prohlížeče - pomocí objektu okna.
  • Správa objektů uvnitř okna je DOM.
  • Spouštění kódu JavaScript na událostech.

událost- reakce počítače na akci uživatele. Například s T. Za událost javaScript se považuje stisknutí tlačítka na klávesnici, pohyb myši a kliknutí a zavření okna prohlížeče. Všechny akce s t. javaScript je generován objekty dokumentu a prohlížeče (bez pojmu „uživatel“). Když například kliknete na odstavec, událost kliknutí myší je generována objektem – odstavcem.

Abyste mohli spouštět nějaký javascriptový kód, který reaguje na události, musíte tento kód přiřadit k události generované z konkrétního objektu, tzn. s konkrétní událostí z konkrétního objektu. Tato akce se nazývá - předplatné akce.

Předplatné znamená, že navážeme funkci na konkrétní událost z konkrétního objektu v objektovém modelu prohlížeče. A když tento objekt vytvoří (vygeneruje) tuto událost, pak se tato funkce automaticky spustí.

  • onclick - kliknutí tlačítkem myši.
  • ondblclick - dvojité kliknutí tlačítkem myši.
  • onmousedown - tlačítko myši je stisknuto (dolů).
  • onmousemove - myš se pohybuje nad objektem (dochází k mnoha událostem, pohyb myši o 1px = 1 událost).
  • onmouseout - myš opustí objekt.
  • onmouseover - myš se pohybuje nad požadovaným objektem.
  • onmouseup - tlačítko myši se uvolní (zvedne).
  • onkeydown - stisknuté tlačítko klávesnice (dolů).
  • onkeypress - stisknutí tlačítka na klávesnici.
  • onkeyup - tlačítko klávesnice je uvolněno (zvednuté).
  • onblur - ztráta vstupního zaostření (blikající kurzor).
  • onfocus - okamžik, kdy tento prvek obdrží vstupní fokus.
  • onchange - generuje ovládací prvek po ztrátě fokusu, pokud se text změnil (například v textovém poli). Výjimkou je položka seznamu ‚vybrat‘, ve které je tato událost generována okamžitě, nikoli po ztrátě fokusu.
  • onload – vygeneruje se, když se stránka v okně načte. Obvykle se používá, když potřebujete spustit nějaký kód JavaScript po úplném načtení stránky.
  • onunload - nastává před vyjmutím dokumentu z okna (tj. když tento dokument zavřeme nebo přepneme na jiný dokument).
  • onreset - formulář byl resetován.
  • onsubmit - datový formulář byl odeslán.

Předplatné akcí

  • Předplatné přes javaScript. Tato metoda se používá ve většině případů. Nejprve musíme najít objekt prvku, pro který se chceme přihlásit k události, například pomocí metody getElementById (uveďte id požadovaného prvku).
funkce myFunc () ( // vytvořil jednoduchou funkci upozornění ("ahoj"); ) function pageInit () (var p = document. getElementById ("1"); p. onclick = myFunc;) // zavolal funkci pro spuštění události okno. onload = pageInit; // událost se spustí při načtení stránky < p id= 1 >odstavec 1 // nastavení id odstavce
  • Předplatné prostřednictvím html kódu. Nevýhodou této metody je, že zahlcuje html kód svým kódem JavaScript; kromě toho existuje několik omezení a ve složitých případech je použití nepohodlné.
< script type= "text/javascript" >funkce myFunc () ( // vytvořil jednoduchou funkci upozornění ("ahoj"); ) < p onclick= "myFunc()" >odstavec 2 // zavolal funkci

Model zpracování událostí

Když dojde k události pro prvek, pak by podobné události měly nastat také pro všechny jeho nadřazené prvky až do úplného horního okraje stránky (až po ‚tělo‘, protože jde o hlavní oblast dokumentu). Jakákoli událost, která na stránce nastane, se tedy spustí na těle.

Pak vyvstává otázka, v jakém pořadí k takovým událostem dojde? V moderních prohlížečích se model zpracování událostí nazývá bublinový model. Jeho podstata: nejprve dojde k události pro prvek, na který bylo kliknuto, poté pro jeho nadřazený prvek a tak dále až úplně nahoru – k ‚tělu‘.

Prvek -> prvek 2 -> dokument -> okno

Parametry události (objekt události)

Existuje takový objekt událost která má mnoho vlastností. Přečtením těchto vlastností můžete získat informace o událostech. Chcete-li získat informace, musíte nejprve získat samotný objekt.

Hlavní vlastnosti tohoto objektu:

  • x, y - souřadnice myši v okamžiku události.
  • clientX, clientY jsou stejné.
  • offsetX, offsetY - totéž, ale toto je odsazení myši vzhledem k rodičovskému prvku.
  • screenX, screenY - souřadnice obrazovky.
  • tlačítko - které tlačítko myši bylo stisknuto (0 - nestisknuto, 1 - stisknuto levé tlačítko, 2 - stisknuto pravé tlačítko, 4 - stisknuto prostřední tlačítko).
  • keyCode Číselný kód stisknuté klávesy klávesnice.
  • srcElement - prvek, který vyvolal událost.
  • fromElement - prvek, ze kterého se myš přesunula.
  • toElement - označení objektu, přes který myš přejela.
  • cancelBubble – nestandardní způsob, pokud mu dáte hodnotu true, pak bude ‚vyskakovací bublina‘ zrušena; nebo můžete změnit kód tlačítka, které uživatel stiskl.

Od autora: Poté, co je webová stránka plně načtena a připravena, spustí se v JavaScriptu celá kaskáda událostí, které se ještě zvětší, když uživatel začne se stránkou tak či onak interagovat. Události zahrnují načtení stránky, posouvání dolů, kliknutí na tlačítko nebo dokonce vyplnění formuláře. Ke spouštění událostí v JavaScriptu potřebujete speciální kód, který si sami navrhnete a napíšete, čímž vytvoříte hlubší interakci.

Události v JS lze rozdělit do 4 velkých skupin:

Události uživatelského rozhraní: spustí se, když uživatel interaguje s uživatelským rozhraním prohlížeče (tlačítka kolem webové stránky, která jsou součástí rozhraní prohlížeče). Tyto události mohou také zahrnovat akce, které stránka provádí nezávisle na uživateli. Tyto události zahrnují změnu velikosti okna, posouvání stránky a načítání a vyjímání obsahu.

Události klávesnice, myši a dotykové obrazovky: Spustí se, když uživatel stiskne nebo uvolní tlačítka na klávesnici, ovládá myš, trackpad nebo používá dotykovou obrazovku.

Zaměření a handicapové události. Většinou spojené s formuláři: vstupní pole „přijímá fokus“, když je uživatel připraven s ním pracovat. Jiné události sledují odesílání formulářů, změny hodnot polí formuláře a tak dále.

JavaScript. Rychlý start

Mutační události a pozorovatelé. Mutující prvky jsou sledovány, když se změní struktura DOM: například když jsou prvky na stránce vloženy nebo odstraněny skriptem.

Vazba obslužné rutiny události

Vlastní kód, který se spustí pouze pro konkrétní prvek DOM, vytvoří obslužnou rutinu události. V JS existují tři způsoby, jak vytvořit obsluhu události:

1. Standardní obsluha událostí HTML prostřednictvím atributů

Nejstarší způsob vázání akcí, jeden z dosud nejpoužívanějších. Metoda používá speciální atributy v označení. Například:

< input type = "text" id = "username" onblur = "checkName()" >

Ve výše uvedeném příkladu poté, co pole získá fokus a uživatel přejde k vyplnění dalšího pole (například pomocí TAB nebo normálního kliknutí), prvek zavolá funkci checkName, která je napsána v JS.
Standardní obslužné rutiny událostí HTML se v moderním vývoji nedoporučují, hlavně kvůli skutečnosti, že funkčnost je smíchána s označením, což ztěžuje práci a ladění kódu.

2. Standardní obslužné rutiny událostí v DOM

Tato technika odděluje JS a značkování, ale má stejné omezení – událostem lze přiřadit pouze jednu funkci. HTML ekvivalent obslužné rutiny události v DOM by byl:

var uživatelské jméno = document.getElementbyId ("uživatelské jméno"); username.onblur = checkName;

uživatelské jméno. onblur = checkName;

JavaScript. Rychlý start

Naučte se základy JavaScriptu s praktickým příkladem tvorby webové aplikace

Stejně jako v předchozím příkladu se funkce checkName spustí poté, co prvek formuláře ztratí fokus.

3. Posluchači událostí

Moderní metoda pro přidání obsluhy události, která vám umožní řetězit více událostí a funkcí:

var uživatelské jméno = document.getElementbyId ("uživatelské jméno"); username.addEventListener ("blur", checkName, false);

var uživatelské jméno = dokument. getElementbyId ("uživatelské jméno");

uživatelské jméno. addEventListener ("blur", checkName, false);

Booleovská hodnota na konci označuje, zda se má událost zachytit. Obvykle nastaveno na false. V jednoduchých skriptech je událost často zapsána jako anonymní funkce:

var uživatelské jméno = document.getElementbyId ("uživatelské jméno"); username.addEventListener ("blur", function () (// akce ke spuštění události))

Ne všechny události jsou stejné

Je důležité pochopit, že ne všechny události lze řešit stejným způsobem. Události scroll a resize se spouštějí velmi často, a proto je třeba s nimi být velmi opatrní, abyste nezpomalili výkon skriptu. Totéž platí pro zdánlivě neškodné vstupní události. Výkon skriptu může být vážně snížen, pokud se snaží neustále reagovat na často spouštěnou vstupní událost na posuvníku rozsahu.

Ne všechny události jsou sledovány

Sledovatelé mutace aktuálně nemohou sledovat všechny změny všech prvků na stránce. Neexistuje například způsob, jak sledovat změnu výšky prvku (když se kontejner v responzivním designu zmenší, text uvnitř se přeuspořádá a prvky se prodlouží). Stále existují způsoby, jak sledovat změny, o tom budu mluvit v příštím článku.

Připojte události ke správným prvkům

Událost onclick se vztahuje na mnoho prvků, včetně odkazů. Existuje obecné pravidlo – nedoporučuje se připojovat JS kód k odkazům. Kliknutím na odkaz by měl uživatel přejít do jiné oblasti webu nebo na kotvu. Pokud potřebujete prvek uživatelského rozhraní, který lze použít ke změně něčeho na stejné stránce, tlačítko se vám bude hodit. JavaScript na tlačítko zavěsíte bez problémů.

Pokud to umíte pomocí CSS, nepoužívejte JavaScript

Ve srovnání s CSS je JavaScript pomalý a nespolehlivý. V zásadě by se CSS mělo používat jako alternativa ke složitému skriptování, kdykoli je to možné. CSS však nedělá všechno. Dobře funguje s: hover (v mnoha případech nahrazuje události dotyku) a v některých případech může také nahradit události kliknutí s: target. Animace CSS se automaticky spouštějí po načtení stránky a existují speciální stavy CSS, které lze spustit pro prvky, jako jsou přepínače. Něco složitějšího je však obvykle lepší ponechat JavaScriptu.

Při práci se stránkou uživatel provádí různé akce: kliká na tlačítka myši, zadává text na klávesnici. Každá taková akce je událostí prohlížeče. Může být sledován a vykonáván určitými řádky programu, když nastanou. JavaScript pro to má obslužné rutiny událostí. Kromě uživatelských akcí existují další události prohlížeče, jako je úplné načtení stránky.

Každá akce má svůj název. kliknutí je stisk levého tlačítka myši, stisknutá klávesa je stisk klávesy, focus je ohnisko prvku formuláře,

Zpracování událostí

Zavolá se funkce, která se provede při spuštění události obsluha události... Každý typ události má svůj vlastní handler. Název handleru se skládá ze slova on a názvu události. Například obslužná rutina události click se nazývá onclick. Události se nedějí na stránce obecně, ale na konkrétním prvku. Obsluha tedy není samostatnou funkcí. Obslužný program je umístěn na některém prvku stránky.

Existují různé způsoby, jak přiřadit obslužnou rutinu události k prvku. Obslužnou rutinu můžete přiřadit pomocí atributu tag. Kód, který se má provést při spuštění události, je zapsán v hodnotě atributu. Pojďme vytvořit stránku, přidat na ni tlačítko a přiřadit k ní obsluhu události kliknutí:

1
2
3
4
5
6
7

Strana

JavaScript:

JavaScript:

17
18
19
20
21
22

var inform = funkce () (upozornění ("Další tlačítko");); var mbutton = document.getElementById ("mbutton"); mbutton.onclick = informovat;

Když je funkce přiřazena k handleru, nejsou za názvem funkce žádné závorky. Pokud dáte závorky, pak to nebude přiřazení funkce, ale výzva k provedení.

Existuje metoda addEventListener (), která prvku také přiřadí obsluhu události. Je považován za modernější. Nyní se příliš často nepoužívá, ale v JavaScriptu jsou nové události, které lze zpracovat pouze touto metodou.

element.addEventListener (událost, funkce)

Možnosti:

událost - událost, kterou je potřeba zpracovat

funkce - funkce, která se stává handlerem

V parametrech této metody je název události zapsán v uvozovkách a slovo před ním nemusíte psát.

HTML kód:

JavaScript:

24
25
26
27
28
29

var newinform = funkce () (upozornění ("Stisknuto nové tlačítko");); var newbutton = document.getElementById ("nové tlačítko"); newbutton.addEventListener ("kliknout", newinform);

Metoda removeEventListener () umožňuje odebrat obslužnou rutinu.

element.removeEventListener (událost, funkce)

Pomocí uvažované metody lze prvku přiřadit více obslužných rutin pro stejnou událost. Poté je třeba odstranit každý z nich samostatně.

Objekt události

Při každém spuštění události se vygeneruje objekt události. Objekt obsahuje informace o události. Různé typy událostí mají různé předměty. Existují ale také vlastnosti, které má každý objekt. Například vlastnost type obsahuje typ události.

Objekt události je předán jako parametr funkci, která je obslužnou rutinou. Pro přístup k objektu je potřeba vytvořit parametr ve funkci. Tento parametr se používá k odkazování na objekt. Pokud funkce vyžaduje i další parametry, pak objekt události musí být prvním parametrem. Změňme handler pro tlačítko s id rovným "tlačítko". Pojďme získat přístup k objektu události. Místo hlášení o stisknutí tlačítka zobrazíme typ události. Nyní bude handler vypadat takto:

13
14
15
16

button.onclick = funkce (událost) (upozornění (typ události););

Kliknutím na tlačítko se zobrazí typ spouštěné události.

Všechny objekty událostí mají vlastnost currentTarget. Vrátí prvek, který událost spustil. To se může zdát zbytečné. Koneckonců, handler je přiřazen ke konkrétnímu prvku. Proč tento prvek znovu vracet? Ale s událostmi prohlížeče jsou věci trochu složitější. Jak se to používá, se dozvíte o něco později. Další vlastnosti zvážíme při studiu konkrétních událostí.

Typy událostí

Na úsvitu rozvoje World Wide Web se weboví vývojáři museli vypořádat pouze s malým počtem událostí: „načíst“, „kliknout“, „přejet myší“ a další. Tyto poměrně staré typy událostí jsou dobře podporovány všemi prohlížeči. Jak se webová platforma vyvíjela, byla zahrnuta výkonnější API a počet událostí se výrazně zvýšil. Neexistuje žádný standard, který by definoval kompletní sadu událostí, a počet podporovaných událostí stále rychle roste. Tyto nové události jsou identifikovány v následujících dvou zdrojích:

    Specifikace DOM Level 3 Events, která se po mnoha letech stagnace začala aktivně rozvíjet pod záštitou konsorcia W3C.

    Mnoho nových API ve specifikaci HTML5 (a souvisejících dalších specifikacích) definuje nové události používané například pro správu historie, přetahování, výměnu zpráv mezi dokumenty a přehrávání zvuku a videa.

Všimněte si, že mnoho z těchto nových typů událostí ještě není široce podporováno a jsou definovány standardy, které jsou stále ve fázi návrhu. Události, které budete ve svých webových aplikacích nejčastěji využívat, budou obvykle spadat do kategorie dlouhodobých a podporovaných všemi prohlížeči: jsou to události pro práci s myší, klávesnicí, HTML formuláři a objektem Window. Tyto události zvážíme.

Události načítání dokumentů

Většina webových aplikací bezpodmínečně potřebuje webový prohlížeč, aby je upozornil, když je dokument dokončen a je připraven s ním provádět operace. Tomuto účelu akce slouží zatížení v objektu Window. Událost load je vyvolána až po úplném načtení dokumentu a všech jeho obrázků. Skripty však lze obvykle spustit hned po analýze dokumentu, ještě před načtením obrázků. Dobu spouštění webové aplikace můžete výrazně zkrátit spuštěním skriptování při jiných událostech než načítání.

událost DOMContentLoaded spustí se, jakmile je dokument načten, analyzován analyzátorem a všechny odložené skripty byly provedeny. V tomto okamžiku mohou obrázky a skripty s atributem async pokračovat v načítání, ale samotný dokument bude připraven k provádění operací. Tato událost byla poprvé představena ve Firefoxu a od té doby byla přijata všemi ostatními výrobci prohlížečů, včetně Microsoftu, který přidal podporu pro tuto událost v IE9. Navzdory předponě DOM v názvu tato událost není součástí standardu událostí DOM úrovně 3, ale je standardizována specifikací HTML5.

Při načítání dokumentu se mění hodnota vlastnosti document.readyState. Každá změna hodnoty této vlastnosti v IE je doprovázena událostí readystatechange na objektu Document, takže v IE lze tuto událost použít k určení, kdy nastane úplný stav. Specifikace HTML5 standardizuje událost readystatechange, ale instruuje jej spustit bezprostředně před událostí load, takže není zcela jasné, jaká je výhoda události readystatechange oproti zátěži.

Níže uvedený příklad definuje funkci whenReady (). Funkce předaná do whenReady () je volána (jako metoda objektu Document), jakmile je dokument připraven k provádění operací. whenReady () naslouchá událostem DOMContentLoaded a readystatechange a používá událost load pouze jako záložní v případě, že je použita ve starších prohlížečích, které nepodporují první dvě události. Funkce whenReady () bude použita v některých z následujících scénářů:

/ * Předejte svou funkci whenReady () a ta ji zavolá (jako metodu objektu dokumentu), jakmile je dokument analyzován a připraven k provádění operací. Registrované funkce jsou volány při první události DOMContentLoaded, readystatechange nebo load. Jakmile je dokument připraven a jsou volány všechny funkce, whenReady () okamžitě zavolá všechny funkce, které mu byly předány. * / var whenReady = (funkce () (// Tato funkce je vrácena funkcí whenReady () var funcs =; // Funkce, které mají být volány při události var ready = false; // Získat hodnotu true, když je zavolána funkce handleru / / Obslužná rutina události , která je volána, jakmile je dokument // připraven k provádění operací handler funkce (e) (// Pokud již byla obslužná rutina volána, stačí vrátit řízení, pokud (připraveno) return; // Pokud je tato událost readystatechange a stav je // výborný od "complete", což znamená, že dokument ještě není připraven, pokud (e.type === "readystatechange" && document.readyState! == "complete") se vrátí; // Volat všem registrovaným funkce. // Všimněte si, že každá hodnota // vlastnosti funcs.length je zkontrolována jednou, v případě, že jedna z volaných funkcí // registruje další funkce.for (var i = 0; i

Události s myší

S myší je spojeno poměrně dost událostí. Všechny jsou uvedeny v tabulce níže. Všechny události myši kromě mouseenter a mouseleave vybuchnou. Události kliknutí na odkazy a tlačítka pro odeslání formuláře mají výchozí akce, které lze vrátit zpět. Teoreticky je možné zrušit událost kontextového menu a zabránit zobrazení kontextového menu, ale některé prohlížeče mají nastavení, která činí tuto událost nezrušitelnou.

Události myši JavaScript
Typ Popis
klikněte Událost na vysoké úrovni vyvolaná, když uživatel stiskne a uvolní tlačítko myši nebo jinak aktivuje prvek.
kontextová nabídka Zrušitelná událost, která je vyvolána před zobrazením kontextové nabídky. Současné prohlížeče zobrazují kontextovou nabídku při kliknutí pravým tlačítkem, takže tuto událost lze použít také jako událost kliknutí.
dblclick Spustí se, když uživatel dvakrát klikne.
pohyb myši Spustí se, když uživatel stiskne tlačítko myši.
mouseup Spustí se, když uživatel uvolní tlačítko myši.
pohyb myši Zvednuté, když uživatel pohne ukazatelem myši.
přejet myší Zvednuté, když je ukazatel myši umístěn nad prvkem. Vlastnost relatedTarget (nebo fromElement v IE) identifikuje prvek, ze kterého byl přesunut ukazatel myši.
mouseout Zvednuté, když ukazatel myši opustí prvek. Vlastnost relatedTarget (nebo toElement v IE) určuje prvek, na který se přesunul ukazatel myši.
mouseenter Podobné jako při přejetí myší, ale nevyskakuje. Poprvé se objevil v IE a byl standardizován v HTML5, ale ještě není podporován všemi prohlížeči.
myší list Jako mouseout, ale nevyskakuje. Poprvé se objevil v IE a byl standardizován v HTML5, ale ještě není podporován všemi prohlížeči.

Objekt předaný obslužným rutinám události myši má vlastnosti clientX a klientY které definují souřadnice ukazatele vzhledem k oknu. Chcete-li je převést na souřadnice dokumentu, musíte k nim přidat pozice posuvníku okna.

Vlastnosti altKey, ctrlKey, metaKey a klávesa Shift definují stavy různých modifikačních kláves, které mohly být přidrženy v době události: lze je použít například k rozlišení jednoduchého kliknutí od kliknutí se stisknutou klávesou Shift.

Vlastnictví knoflík určuje, které tlačítko myši bylo stisknuto v době události. Různé prohlížeče však do této vlastnosti zapisují různé hodnoty, takže je obtížné ji používat přenosným způsobem.

Některé prohlížeče vyvolávají událost kliknutí pouze při kliknutí na levé tlačítko. Pokud tedy potřebujete ovládat kliknutí na jiná tlačítka, měli byste použít události mousedown a mouseup. Událost kontextového menu obvykle signalizuje, že bylo provedeno kliknutí pravým tlačítkem, ale jak bylo uvedeno výše, není vždy možné zabránit tomu, aby se kontextové menu objevilo v obslužných rutinách této události.

Níže uvedený příklad demonstruje funkci přetažení (), která, když je volána z obslužné rutiny události mousedown, umožňuje uživateli táhnout absolutně umístěné prvky dokumentu pomocí myši. Funkce drag () funguje s oběma modely událostí, DOM i IE.

Funkce drag () má dva argumenty. První je přetahovaná položka. Může to být prvek, který vyvolal událost mousedown, a prvek, který ji obsahuje (můžete například nechat uživatele, aby uchopil prvek, který vypadá jako nadpis okna, a přetáhl prvek, který obsahuje prvek, který vypadá jako okno). V každém případě však musí jít o prvek dokumentu absolutně umístěný pomocí atributu pozice CSS. Druhým argumentem je objekt události přijatý s událostí mousedown:

/ * drag () - drag and drop absolutně umístěné HTML prvky. Tato funkce musí být volána z obsluhy události onmousedown. Následné události mousemove způsobí pohyb určeného prvku. Událost mouseup dokončí přesun. Tato implementace funguje ve standardních modelech událostí i modelech událostí IE. Používá funkci getScrollOffsets (). Argumenty elementToDrag: Prvek, který přijal nebo obsahuje událost mousedown. Tento prvek musí být absolutně umístěn. Hodnoty jeho vlastností style.left a style.top se změní, když uživatel pohne ukazatelem myši. event: Objekt Event přijatý obslužnou rutinou události mousedown. * / funkce přetažení (elementToDrag, událost) (// Převede počáteční souřadnice myši na souřadnice dokumentu var scroll = getScrollOffsets (); // Pomocná funkce deklarovaná níže var startX = event.clientX + scroll.x; var startY = event. clientY + scroll.y; // Počáteční souřadnice (vzhledem k začátku dokumentu) prvku, který // bude přesunut. Protože elementToDrag je absolutně umístěn, // předpokládá se, že jeho vlastnost offsetParent odkazuje na dokument body var origX = elementToDrag.offsetLeft; var origY = elementToDrag.offsetTop; // Zjištění vzdálenosti mezi bodem události mousedown a levým horním rohem prvku. // Tato vzdálenost bude zohledněna při pohybu ukazatele myši.var deltaX = startX - origX; var deltaY = startY - origY; // Registrace událostí obslužného programu mousemove a mouseup //, které následují po události mousedown.if (document.addEventListener) (// Standardní model události // Registrace zachycení handlerů v dokumentu document.addEventListener ("mousemove", moveHandler, true); document.addEventListener ("mouseup", upHandler, true); ) else if (document.attachEvent) (// Model událostí IE pro IE5-8 // V modelu událostí IE jsou události zachyceny voláním // metody setCapture () prvku. elementToDrag.setCapture (); elementToDrag. připojitEvent ("onmousemove", moveHandler); elementToDrag.attachEvent ("onmouseup", upHandler); // Interpretovat ztrátu zachycení události myši jako událost mouseup elementToDrag.attachEvent ("onlosecapture", upHandler);) // Tato událost byla zpracováno a nemělo by být předáno jiným handlerům if (událost .stopPropagation) event.stopPropagation (); // Standardní model else event.cancelBubble = true; // IE // Zabránění provádění výchozích akcí. if (event.preventDefault) event.preventDefault (); // Standardní model else event.returnValue = false; // IE / * Tento ovladač zachycuje události mousemove, ke kterým dochází při přetahování prvku. Je zodpovědný za pohyb prvku. * / funkce moveHandler (e) (if (! e) e = window.event; // IE Event Model // Přesunutí prvku na pozici ukazatele myši na základě polohy // posuvníků a posunů vzhledem k initial click.var scroll = getScrollOffsets ( ); elementToDrag.style.left = (e.clientX + scroll.x - deltaX) + "px"; elementToDrag.style.top = (e.clientY + scroll.y - deltaY) + "px"; // A přeruší šíření události dále.if (e.stopPropagation) e.stopPropagation (); // Standardní model jinak e.cancelBubble = true; // IE) / * Tento ovladač zachytí poslední událost mouseup, která dokončí operaci přetažení. * / funkce upHandler (e) (if (! e) e = window.event; // IE Event Model // Odebrat zachycující obslužné rutiny událostí. if (document.removeEventListener) (// DOM Event Model document.removeEventListener ("mouseup" , upHandler, true); document.removeEventListener ("mousemove", moveHandler, true);) else if (document.detachEvent) (// Model události IE 5+ elementToDrag.detachEvent ("onlosecapture", upHandler); elementToDrag.detachEvent ( "onmouseup", upHandler); elementToDrag.detachEvent ("onmousemove", moveHandler); elementToDrag.releaseCapture ();) // A přeruší další šíření události. if (e.stopPropagation) e.stopPropagation (); // Standardní model else e.cancelBubble = true; // IE)) // Vrátí aktuální pozice posuvníku jako vlastnosti x a y objektové funkce getScrollOffsets (w) (// Použijte zadané okno nebo aktuální, // pokud funkce se volá bez argumentu w = w | | window; // Následující metoda funguje ve všech prohlížečích kromě IE verze 8 a pod if (w.pageXOffset! = null) return (x: w.pageXOffset, y: w.pageYOffset); // Pro IE (a další prohlížeče) ve standardním režimu var d = w.document; if (document.compatMode == "CSSICompat") return (x: d.documentElement.scrollLeft, y: d.documentElement.scrollTop); // Pro prohlížeče v režimu kompatibility return (x: d.body.scrollLeft, y: d.body.scrollTop); )

Následující úryvek ukazuje, jak používat funkci přetažení () v souboru HTML:

Táhni mě

Tohle je zkouška. Kontrola, kontrola, kontrola.

Nejdůležitější je zde atribut onmousedown u vnořeného prvku

... Všimněte si, že používá vlastnost this.parentNode. To znamená, že se přesune celý prvek kontejneru.

Události vkládání textu

Prohlížeče podporují tři staré události vstupu klávesnice. Události keydown a keyup jsou události nízké úrovně a jsou diskutovány v další části. Nicméně událost stisknutí klávesy je nejvyšší úroveň, která označuje, že byl zadán tisknutelný znak.

Koncept specifikace událostí DOM úrovně 3 definuje obecnější událost textový vstup generované v reakci na textový vstup, bez ohledu na to, jak byl zadán.

S navrhovanou událostí textinput a aktuálně implementovanou událostí textInput je předán jednoduchý objekt události, který má vlastnost data, která ukládá zadaný text. (Další navrhovaná vlastnost, inputMethod, by měla definovat zdroj vstupu, ale ještě nebyla implementována.) Pro zadávání z klávesnice bude vlastnost data obvykle obsahovat jeden znak, ale při psaní z jiných zdrojů může obsahovat mnoho znaků .

Objekt události odeslaný s událostí stisknutí klávesy má složitější organizaci. Událost stisknutí klávesy představuje zadání jednoho znaku. Tento znak je obsažen v objektu události jako číselná bodová hodnota kódu Unicode a k jeho převedení na řetězec musíte použít metodu String.fromCharCode (). Ve většině prohlížečů je kódový bod zadaného znaku uložen ve vlastnosti keyCode objekt události. Z historických důvodů však tuto vlastnost místo toho používá Firefox charCode.

Ve většině prohlížečů se událost stisku klávesy vyvolá pouze při zadání tisknutelného znaku. Ve Firefoxu je však událost stisknutí klávesy vyvolána také pro netisknutelné znaky. Pro rozlišení těchto dvou případů (a ignorování netisknutelných znaků) je možné zkontrolovat, zda vlastnost charCode objektu události existuje a obsahuje hodnotu 0.

Události textinput, textInput a keypress lze zrušit, aby se zabránilo zadávání znaků. To znamená, že tyto události lze použít k filtrování vstupu. Můžete například zabránit zadávání abecedních znaků do číselného vstupního pole.

Níže uvedený příklad ukazuje modul JavaScript, který implementuje tento druh filtrování. Hledá předměty s dalším (nestandardním) atributem data-allowed-chars. Registruje obslužné rutiny událostí textinput, textInput a keypress pro všechny nalezené prvky a omezuje vstup na znaky regulárního výrazu určené v atributu data-allowed-chars:

/ * Vstup filtru pro položky Tento modul najde všechny prvky v dokumentu, které mají atribut "data-allowed-chars". Registruje obslužné rutiny událostí stisknutí klávesy, textového vstupu a textového vstupu pro tyto prvky, aby omezil sadu znaků, které lze zadat, aby bylo možné zadat pouze znaky určené v atributu. Pokud prvek má také atribut "data-messageid", hodnota tohoto atributu je interpretována jako id jiného prvku v dokumentu. Pokud uživatel zadá neplatný znak, prvek se zadaným id se zviditelní. Pokud uživatel zadá platný znak, položka zprávy se skryje. Tento prvek zprávy je určen k zobrazení vysvětlení, proč byl uživatelský vstup odmítnut. Musí být stylizován pomocí CSS, aby byl zpočátku neviditelný. * / whenReady (funkce () (// Volání této funkce, když je dokument načten // Načtení všech prvků var inputelts = document.getElementsByTagName ("vstup"); // Vynechá je ve smyčce for (var i = 0; i< inputelts.length; i++) { var elt = inputelts[i]; // Пропустить элементы, не являющиеся текстовыми полями ввода // и не имеющие атрибута data-allowed-chars if (elt.type != "text" || !elt.getAttribute("data-allowed-chars")) continue; // Зарегистрировать наш обработчик события в этом элементе input // keypress старое событие и реализовано во всех браузерах. // textInput поддерживается в Safari и Chrome с 2010 года. // textinput версия проекта стандарта "DOM Level 3 Events". if (elt.addEventListener) { elt.addEventListener("keypress", filter, false); elt.addEventListener("textInput", filter, false); elt.addEventListener("textinput", filter, false); } // textinput не поддерживается версиями IE, в которых не реализован // метод addEventListener() else { elt.attachEvent("onkeypress", filter); } } // Обработчик событий keypress и textInput, фильтрующий ввод пользователя function filter(event) { // Получить объект события и целевой элемент target var e = event || window.event; // Модель стандартная или IE var target = e.target || e.srcElement; // Модель стандартная или IE var text = null; // Введенный текст // Получить введенный символ или текст if (e.type === "textinput" || e.type === "textInput") text = e.data; else { // Это было событие keypress // Введенный печатаемый символ в Firefox сохраняется в свойстве charCode var code = e.charCode || e.keyCode; // Если была нажата какая либо функциональная клавиша, не фильтровать ее if (code < 32 || // Управляющий символ ASCII e.charCode == 0 || // Функциональная клавиша (в Firefox) e.ctrlKey || e.altKey) // Удерживаемая клавиша-модификатор return; // Не фильтровать это событие // Преобразовать код символа в строку var text = String.fromCharCode(code); } // Отыскать необходимую нам информацию в этом элементе input var allowed = target.getAttribute("data-allowed-chars"); // Допустимые символы var messageid = target.getAttribute("data-messageid"); // Сообщение id if (messageid) // Если указано значение id, получить элемент var messageElement = document.getElementById(messageid); // Обойти в цикле символы во введенном тексте for(var i = 0; i < text.length; i++) { var c = text.charAt(i); allowed = new RegExp(allowed, "i"); // Создаем регулярное выражение if (c.search(allowed) == -1) { // Недопустимый символ? // Отобразить элемент с сообщением, если указан if (messageElement) messageElement.style.visibility="visible"; // Отменить действия по умолчанию, чтобы предотвратить вставку текста if (e.preventDefault) e.preventDefault(); if (e.returnValue) e.returnValue = false; return false; } } // Если все символы оказались допустимыми, скрыть элемент // с сообщением, если он был указан if (messageElement) messageElement.style.visibility = "hidden"; } });

Níže je ukázka HTML značek pomocí tohoto modulu:

Vyplňte prosím formulář.

Kontaktní informace


Níže uvedený obrázek znázorňuje použití tohoto formuláře. Zde jsem po zadání jména vložil číslici, která byla automaticky zablokována a objevila se varovná hláška:

Události stisku kláves a textinput se spouštějí těsně před skutečným vložením nového textu do prvku zaměřeného dokumentu, takže jejich handlery mohou zabránit vložení textu zrušením události.

Prohlížeče také implementují událost vstup který se spustí po vložení textu do prvku. Tuto událost nelze zrušit a její odpovídající objekt události neobsahuje informace o vloženém textu — pouze upozorní, že se textový obsah prvku změnil. Pokud například chcete zajistit, aby byly zadány pouze velká písmena, můžete definovat obsluhu vstupní události, jak je uvedeno níže:

Vstupní událost je standardizována ve specifikaci HTML5 a je podporována všemi moderními prohlížeči kromě IE. Podobného efektu lze v IE dosáhnout detekcí změny vlastnosti value vstupního textového prvku pomocí vlastní události změna majetku.

Události na klávesnici

Vývoj keydown a klíčování spustí se, když uživatel stiskne nebo uvolní klávesu na klávesnici. Jsou generovány pro modifikační klávesy, funkční klávesy a alfanumerické klávesy. Pokud uživatel podrží klávesu dostatečně dlouho, aby aktivoval režim automatického opakování, bude vygenerováno mnoho událostí stisknutí klávesy, než dojde k události keyup.

Objekt události odpovídající těmto událostem má vlastnost keyCode s číselnou hodnotou, která identifikuje stisknutou klávesu. U klíčů, které generují tisknutelné znaky, obecně vlastnost keyCode obsahuje kódový bod Unicode odpovídající základnímu znaku zobrazenému na klíči. Klávesy s písmeny vždy generují hodnoty keyCode, které odpovídají velkým písmenům, bez ohledu na stav klávesy Shift, protože se jedná o znaky zobrazené na klávesách.

Podobně numerické klávesy vždy generují hodnoty keyCode, které odpovídají numerickým znakům zobrazeným na klávesách, i když podržíte klávesu Shift pro zadání interpunkčního znaménka. Pro klíče, které neodpovídají tisknutelným znakům, bude mít vlastnost keyCode nějaký jiný význam. Tyto hodnoty vlastnosti keyCode nebyly nikdy standardizovány. Nejsou však mezi prohlížeči tak odlišné, aby přenositelnost nemohla být zajištěna.

Podobně jako objekty události myši mají i objekty události klávesnice vlastnosti altKey, ctrlKey, metaKey a klávesa Shift které se stanou true, pokud byla při vyvolání události přidržena odpovídající modifikační klávesa.

Události keydown a keyup a vlastnost keyCode existují již více než deset let, ale nikdy nebyly standardizovány. Koncept událostí DOM úrovně 3 standardizuje typy událostí keydown a keyup, ale nestandardizuje vlastnost keyCode. Místo toho definuje novou vlastnost, key, která by měla obsahovat název klíče jako řetězec. Pokud se klíč shoduje s tisknutelným znakem, musí vlastnost key obsahovat tento tisknutelný znak. U funkčních kláves musí vlastnost key obsahovat hodnoty jako F2, Home nebo Left.

V době psaní tohoto článku nebyla vlastnost klíče událostí DOM úrovně 3 ještě implementována v žádném prohlížeči. Prohlížeče založené na Webkitu, Safari a Chrome však definují vlastnost pro tyto objekty událostí keyIdentifier... U funkčních kláves, jako je vlastnost key, vlastnost keyIdentifier neobsahuje číslo, ale řetězec s názvem klíče, například Shift nebo Enter. U klíčů, které odpovídají tisknutelným znakům, tato vlastnost obsahuje méně uživatelsky přívětivou řetězcovou reprezentaci bodu kódu Unicode znaku. Například klávesa A odpovídá U + 0041.

Níže uvedený příklad definuje třídu Keymap, která mapuje identifikátory zkratek, jako jsou PageUp, Alt_Z a ctrl + alt + shift + F5, na funkce JavaScriptu, které jsou volány v reakci na tyto stisky kláves. Definice klávesových zkratek jsou předány konstruktoru Keymap () ve formě objektu JavaScript, jehož názvy vlastností odpovídají identifikátorům zkratek a jejichž hodnoty vlastností obsahují odkazy na funkce handleru. Vazby se přidávají a odstraňují pomocí metod bind () a unbind ().

Nainstaluje objekt Keymap do prvku HTML (obvykle objekt Document) pomocí metody install (). Nastavením objektu Keymap se zaregistruje handler pro událost keydown na tomto prvku. Při každém stisku klávesy obsluha zkontroluje funkci, která odpovídá dané kombinaci. Pokud funkce existuje, zavolá se.

Obslužná rutina události keydown používá vlastnost klíče Události DOM úrovně 3, pokud existuje. Jinak se pokusí použít vlastnost keyIdentifier Webkit. A jako záložní nástroj používá obslužná rutina nestandardní vlastnost keyCode:

// Funkce konstruktoru Keymap (vazby) (this.map = (); // Definujte identifikátor mapování-> handler if (vazby) (// Zkopírujte do něj počáteční mapu vazeb pro (název ve vazbách) this.bind ( jméno, vazby);)) // Sváže zadaný identifikátor klíče se zadanou funkcí pomocí handleru Keymap.prototype.bind = function (key, func) (this.map = func;); // Odebere vazbu pro zadaný klíč id Keymap.prototype.unbind = function (key) (delete this.map;); // Nainstaluje tento objekt Keymap do zadaného prvku HTML Keymap.prototype.install = funkce (element) (var keymap = this; // Definice funkcí obslužné rutiny události funkce handler (událost) (return keymap.dispatch (událost, prvek);) // Nastaví if (element.addEventListener) element.addEventListener ("keydown", handler, false); else if (element.attachEvent) element.attachEvent ("onkeydown", handler);); // Tato metoda deleguje zpracování událostí klávesnice na základě Keymap.prototype bindings.dispatch = funkce (událost, prvek) (// Zpočátku neexistují žádné názvy modifikačních klíčů ani názvy klíčů var modifiers = ""; var keyname = null; / / Vytvořte kanonické řetězce modifikátoru z malých // znaků v abecedním pořadí. modifikátory if (event.altKey) + = "alt_"; modifikátory if (event.ctrlKey) + = "ctrl_"; modifikátory if (událost .metaKey) + = " meta_"; modifikátory if (event.shiftKey) + = "shift_"; // Název klíče lze snadno získat, pokud je implementována vlastnost klíče, // definovaná standardem DOM Level 3: if (event.key) keyname = event.key; // Vlastnost keyIdentifier // můžete použít k získání názvů funkčních kláves v Safari a Chrome else if (event.keyIdentifier && event.keyIdentifier.substring (0,2)! == "U +") keyname = event. keyIdentifier; // Jinak můžete použít vlastnost keyCode // a zobrazit kód> název níže else ke yname = Keymap.keyCodeToKeyName; // Pokud nelze určit název klíče, ignorujte událost // a vraťte se. if (! keyname) return; // Kanonický identifikátor klíče se skládá z názvů modifikátorů // a názvu klíče s malými písmeny var keyid = modifiers + keyname.toLowerCase (); // Zkontrolujte, zda existuje vazba pro daný klíč id var handler = this.map; if (handler) (// Pokud je handler pro tento klíč, zavolejte ho // Volejte funkci handleru var retval = handler.call (element, event, keyid); // Pokud handler vrátil false, zrušte výchozí akce / / a přerušte události probublávání if (retval === false) (if (event.stopPropagation) event.stopPropagation (); // model DOM else event.cancelBubble = true; // IE model if (event.preventDefault) událost. preventDefault (); / / DOM else event.returnValue = false; // IE) // Vrátí hodnotu přijatou od handleru return retval;)); // Pomocná funkce pro převod identifikátoru klíče do kanonické podoby. // Potřebujeme převést „meta“ identifikátor na „ctrl“, aby // Meta-C identifikátor byl „Command-C“ na Macu a „Ctrl-C“ na všech ostatních. Keymap.normalize = function (keyid) (keyid = keyid.toLowerCase (); // Var words = keyid.split (/ \ s + | [\ - + _] /); // Extrahovat modifikátory var keyname = words . pop (); // keyname je poslední slovo keyname = Keymap.aliases || keyname; // Je to alias? words.sort (); // Modifikátory řazení words.push (keyname); // Vrátit normalizované name return words .join ("_"); // Dejte to všechno dohromady) Keymap.aliases = (// Mapujte známé aliasy klíčů na jejich // "oficiální" názvy používané v DOM Level 3 a mapujte kódy klíčů // na níže uvedená jména. Název a hodnota se musí skládat pouze z malých písmen "escape": "esc", "return": "enter", "delete": "del", "ctrl": "control", "mezera" : "mezerník", "ins": "vložit"); // Stará vlastnost keyCode objektu události keydown není standardizována // Ale následující hodnoty lze s úspěchem použít ve většině prohlížečů a operačních systémů. Keymap.keyCodeToKeyName = (// Klávesy se slovy nebo šipkami na nich 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Control", 18: "Alt", 19: "Pauza", 20: "CapsLock", 27: "Esc", 32: "Mezerník", 33: "PageUp", 34: "PageDown", 35: "Konec", 36: "Domů", 37: "Vlevo", 38: "Nahoru", 39: "Vpravo", 40: "Dolů", 45: "Vložit", 46: "Del", // Číselné klávesy na hlavní klávesnici (ne na sekundární) 48: "0", 49:" 1", 50:" 2", 51:" 3", 52:" 4", 53:" 5", 54:" 6", 55:" 7", 56:" 8 ", 57: "9", // Klávesy s písmeny. Všimněte si, že není žádný rozdíl // mezi velkými a malými písmeny 65: "A", 66: "B", 67: "C", 68: "D" , 69: "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77 : " M ", 78:" N ", 79:" O ", 80:" P ", 81:" Q ", 82:" R ", 83:" S ", 84:" T ", 85:" U " , 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", // Číselné klávesy na další klávesnici a klávesy s interpunkčními znaménky. // ( Není podporováno v Opeře.) 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", 104: "8", 105: "9", 106: "Násobit", 107: "Přidat", 109: "S odečíst ", 110:" Desetinné ", 111:" Dělit ", // Funkční klávesy 112:" F1 ", 113:" F2 ", 114:" F3 ", 115:" F4 ", 116:" F5 ", 117 : "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 124: "F13", 125: " F14", 126:" F15", 127:" F16", 128:" F17", 129:" F18", 130:" F19", 131:" F20", 132:" F21", 133:" F22 " , 134: "F23", 135: "F24", // Interpunkční klávesy, které pro zadání nevyžadují // přidržení klávesy Shift. // Pomlčku nelze použít přenosným způsobem: FF vrací // stejný kód jako pro klíč Odečíst 59: ";", 61: "=", 186: ";", 187: "=", // Firefox a Opera vrátí 59,61 188: ",", 190: ".", 191: "/", 192: "` ", 219:" [", 220:" \\ ", 221:"] ", 222: "" ");

Níže je uveden příklad použití objektu Keymap:

Window.onload = function () (var keymap = new Keymap; // Vytvořte nový objekt Keymap keymap.bind ("ctrl + a", // Kombinace funkce Ctrl + A (událost, keyid)) (upozornění ("Stiskli jste: " + keyid))); // Další vazba Ctrl + Enter keymap.bind ("ctrl + enter", funkce (událost, ID klíče) (upozornění ("Stiskli jste:" + ID klíče))); keymap.install (dokument. body); // Nastavení objektu Keymap pro celý dokument);