Události DOM - DOM events
Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto problémech na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
Události DOM (Document Object Model) jsou akce, ke kterým dochází v důsledku akce uživatele nebo v důsledku změny stavu prvků a DOM strom. Na straně klienta skriptovací jazyky jako JavaScript, JScript, ECMAScript, VBScript, a Jáva lze zaregistrovat různé obsluhy událostí nebo posluchači na uzlech prvků uvnitř a DOM strom, například v HTML, XHTML, XUL, a SVG dokumenty.
Příklady událostí HTML DOM:
- Když uživatel klikne myší
- Když je načtena webová stránka
- Když byl načten obrázek
- Když se myš pohybuje nad prvkem
- Při změně vstupního pole
- Při odeslání formuláře HTML
- Když uživatel stiskne klávesu[1]
Historicky, jako DOM, modely událostí používané různými internetové prohlížeče měl některé významné rozdíly. To způsobilo problémy s kompatibilitou. V boji proti tomu model události standardizoval World Wide Web Consortium (W3C) v DOM úrovni 2.
Události
Události HTML
Společné akce
Existuje velká sbírka událostí, které lze generovat většinou uzlů prvků:
- Myš Události.[2][3]
- Klávesnice Události.
- Události rámce / objektu HTML.
- Události ve formátu HTML.
- Události uživatelského rozhraní.
- Události mutace (oznámení o jakýchkoli změnách struktury dokumentu).
- Pokrokové události[4] (používá XMLHttpRequest, File API,[5]).
Všimněte si, že výše uvedená klasifikace událostí není úplně stejná jako klasifikace W3C.
Kategorie | Typ | Atribut | Popis | Bubliny | Zrušitelné |
---|---|---|---|---|---|
Myš | klikněte | při kliknutí | Požáry, když ukazovátko tlačítko klikne na prvek. Kliknutí je definováno jako přesunutí myši a přesunutí myší na stejné místo na obrazovce. Pořadí těchto událostí je:
| Ano | Ano |
dblclick | ondblclick | Spustí se, když je tlačítko ukazovacího zařízení poklepejte přes prvek | Ano | Ano | |
mousedown | onmousedown | Vystřelí, když je tlačítko ukazovacího zařízení stisknuto přes prvek | Ano | Ano | |
mouseup | onmouseup | Vystřelí, když je tlačítko ukazovacího zařízení uvolněno nad prvkem | Ano | Ano | |
přejet myší | onmouseover | Vystřelí, když je ukazovací zařízení přesunuto na prvek | Ano | Ano | |
mousemove[6] | onmousemove | Vystřelí, když je ukazovací zařízení přesunuto, když je nad prvkem | Ano | Ano | |
myš | onmouseout | Vystřelí, když je ukazovací zařízení odsunuto od prvku | Ano | Ano | |
dragstart | ondragstart | Vystřelí se na prvku při zahájení tažení. | Ano | Ano | |
táhnout | ondrag | Tato událost je aktivována u zdroje přetažení, tj. Prvku, kde byl spuštěn dragstart, během operace přetažení. | Ano | Ano | |
dragenter | ondragenter | Vystřelí se, když se myš poprvé pohybuje nad prvkem, zatímco dochází k tažení. | Ano | Ano | |
dragleave | ondragleave | Tato událost je aktivována, když myš opustí prvek, zatímco dochází k tažení. | Ano | Ne | |
dragover | ondragover | Tato událost je aktivována, když se myš pohybuje přes prvek, když dochází k tažení. | Ano | Ano | |
pokles | ondrop | Událost přetažení je aktivována na prvku, kde k přetažení dojde na konci operace přetažení. | Ano | Ano | |
dragend | ondragend | Zdroj přetažení obdrží událost dragend po dokončení operace přetažení, ať už byla úspěšná nebo ne. | Ano | Ne | |
Klávesnice | keydown | onkeydown | Vystřelí před stisknutím klávesy, když je stisknuta klávesa na klávesnici. | Ano | Ano |
stisknutí klávesy | onkeypress | Vyvolá se po stisknutí klávesy, když je stisknuta klávesa na klávesnici. | Ano | Ano | |
keyup | onkeyup | Spustí se, když se uvolní klávesa na klávesnici | Ano | Ano | |
Rám HTML /objekt | zatížení | onload | Požáry, když uživatelský agent dokončí načítání veškerého obsahu v dokumentu, včetně okna, rámů, objektů a obrázků U elementů se spustí, když cílový prvek a veškerý jeho obsah dokončí načítání | Ne | Ne |
vyložit | onunload | Spustí se, když uživatelský agent odebere veškerý obsah z okna nebo rámečku U prvků se spustí, když byl odstraněn cílový prvek nebo některý z jeho obsahu | Ne | Ne | |
přerušit | onabort | Spustí se, když se objekt / obrázek zastaví načítání před úplným načtením | Ano | Ne | |
chyba | chyba | Spustí se, když objekt / obrázek / rámeček nelze správně načíst | Ano | Ne | |
změnit velikost | onresize | Vyvolá se při změně velikosti zobrazení dokumentu | Ano | Ne | |
svitek | onscroll | Vyvolá se při rolování pohledu prvku nebo dokumentu | Ne, kromě toho, že událost posouvání v dokumentu musí probublávat do okna[7] | Ne | |
Formulář HTML | vybrat | onselect | Vyvolá se, když uživatel vybere nějaký text v a textové pole, včetně vstupu a textové oblasti | Ano | Ne |
změna | výměna | Vyvolá se, když ovládací prvek ztratí vstup soustředit se a jeho hodnota byla od získání zájmu změněna | Ano | Ne | |
Předložit | onsubmit | Vyvolá se při odeslání formuláře | Ano | Ano | |
resetovat | reset | Vyvolá se při resetování formuláře | Ano | Ne | |
soustředit se | zaostřit | Vystřelí, když prvek zaostří buď pomocí ukazovacího zařízení, nebo pomocí navigace na kartě | Ne | Ne | |
rozmazat | onblur | Vystřelí, když prvek ztratí fokus buď pomocí ukazovacího zařízení, nebo pomocí navigace v záložkách | Ne | Ne | |
Uživatelské rozhraní | zaměřit se na | (žádný) | Podobně jako událost HTML focus, ale lze ji použít na jakýkoli zaostřitelný prvek | Ano | Ne |
zaostření | (žádný) | Podobně jako událost rozmazání HTML, ale lze ji použít na jakýkoli zaostřitelný prvek | Ano | Ne | |
DOMActivate | (žádný) | Podobně jako událost příkazu XUL. Spustí se, když je prvek aktivován, například pomocí kliknutí myší nebo stisknutí klávesy. | Ano | Ano | |
Mutace | DOMSubtree Upraveno | (žádný) | Vyvolá se, když je podstrom upraven | Ano | Ne |
DOMNodeVloženo | (žádný) | Vyvolá se, když byl uzel přidán jako podřízený prvek jiného uzlu | Ano | Ne | |
DOMNodeOdstraněno | (žádný) | Spustí se, když byl uzel odebrán ze stromu DOM | Ano | Ne | |
DOMNodeRemovedFromDocument | (žádný) | Vyvolá se při odstraňování uzlu z dokumentu | Ne | Ne | |
DOMNodeInsertedIntoDocument | (žádný) | Vyvolá se při vkládání uzlu do dokumentu | Ne | Ne | |
DOMAttrModified | (žádný) | Vyvolá se, když byl změněn atribut | Ano | Ne | |
DOMCharacterDataModified | (žádný) | Spustí se, když byla změněna data znaků | Ano | Ne | |
Pokrok | start zatížení | (žádný) | Pokrok začal. | Ne | Ne |
pokrok | (žádný) | Probíhá. Po odeslání načítání. | Ne | Ne | |
chyba | (žádný) | Postup se nezdařil. Po odeslání posledního postupu nebo po odeslání loadstart, pokud pokrok nebyl odeslán. | Ne | Ne | |
přerušit | (žádný) | Postup je ukončen. Po odeslání posledního postupu nebo po odeslání loadstart, pokud pokrok nebyl odeslán. | Ne | Ne | |
zatížení | (žádný) | Progrese je úspěšná. Po odeslání posledního postupu nebo po odeslání loadstart, pokud pokrok nebyl odeslán. | Ne | Ne | |
načíst | (žádný) | Pokrok se zastavil. Po odeslání chyby, přerušení nebo načtení. | Ne | Ne |
Všimněte si, že události, jejichž názvy začínají řetězcem „DOM“, nejsou aktuálně dobře podporovány, a z tohoto a dalších důvodů výkonu je W3C v úrovni DOM 3 zastaralá. Mozilla a Opera Podpěra, podpora DOMAttrModified, DOMNodeVloženo, DOMNodeOdstraněno a DOMCharacterDataModified. Chrome a Safari podporovat tyto události, s výjimkou DOMAttrModified.
Dotkněte se událostí
Webové prohlížeče běží dotykové zařízení, například Apple iOS a Google Android, generovat další události.[8]:§5.3
Kategorie | Typ | Atribut | Popis | Bubliny | Zrušitelné |
---|---|---|---|---|---|
Dotek | touchstart | Spustí se, když je prst položen na dotykovou plochu / obrazovku. | Ano | Ano | |
touchend | Spustí se, když je prst odstraněn z dotykové plochy / obrazovky. | Ano | Ano | ||
dotknout se | Vystřelí, když se prst, který je již umístěn na obrazovce, pohybuje po obrazovce. | Ano | Ano | ||
Touchenter | Vystřelí, když se dotykový bod přesune na interaktivní oblast definovanou prvkem DOM. | Ano | Ano | ||
touchleave | Spustí se, když se dotykový bod vzdálí od interaktivní oblasti definované prvkem DOM. | Ano | Ano | ||
touchcancel | A uživatelský agent musí odeslat tento typ události, aby označil, kdy byl TouchPoint narušen způsobem specifickým pro implementaci, například pohybem mimo hranice okna UA. Uživatelský agent může také odeslat tento typ události, když uživatel umístí více dotykových bodů (Koordinační bod, ve kterém ukazatel (např. Prst nebo stylus) protíná cílový povrch rozhraní) na dotykový povrch, než je zařízení nebo implementace nakonfigurována tak, aby store, v takovém případě by měl být odebrán nejdříve objekt TouchPoint v TouchList.[8]:§5.9 | Ano | Ne |
V W3C návrh doporučení, a TouchEvent
dodává a TouchList
z Dotek
umístění, modifikační klávesy které byly aktivní, a TouchList
z Dotek
umístění v cíleném prvku DOM a TouchList
z Dotek
umístění, která se od předchozího změnila TouchEvent
.[8]
Jablko se nepřipojil k této pracovní skupině a zveřejněním odložil doporučení W3C ohledně jeho specifikace dotykových událostí patenty pozdě v procesu doporučení.[9]
Události ukazatele[10]
Webové prohlížeče na zařízeních s různými typy vstupních zařízení, včetně myši, dotykového panelu a pera, mohou generovat integrované vstupní události. Uživatelé mohou vidět, jaký typ vstupního zařízení je stisknut, jaké tlačítko je na tomto zařízení stisknuto a jak silně je tlačítko stisknuto, pokud jde o pero. Od října 2013 je tato událost podporována pouze v prohlížečích Internet Explorer 10 a 11.
Kategorie | Typ | Atribut | Popis | Bubliny | Zrušitelné |
---|---|---|---|---|---|
Ukazatel | ukazatel dolů | onpointerdown | Vystřelí, když je aktivováno tlačítko ukazovacího zařízení nebo stisknuto přes prvek. | Ano | Ano |
ukazatel | onpointerup | Vystřelí, když je tlačítko ukazovacího zařízení uvolněno nad prvkem | Ano | Ano | |
pointercancel | onpointercancel | Vyvolá se, když je nepravděpodobné, že by ukazovací zařízení pokračovalo v produkci události, protože se například zařízení používá pro posouvání / zvětšování po události ukazatele dolů. | Ano | Ano | |
ukazatel pohybu | onpointermove | Vystřelí, když je ukazovací zařízení přesunuto, když je nad prvkem | Ano | Ano | |
ukazatel | onpointerover | Vystřelí, když je ukazovací zařízení přesunuto na prvek | Ano | Ano | |
ukazatel | onpointerout | Vystřelí, když je ukazovací zařízení odsunuto od prvku. Také vystřelí po ukazateli ukazováním zařízení bez vznášení nebo po něm | Ano | Ano | |
ukazatel | onpointerenter | Vystřelí, když je polohovací zařízení přesunuto na prvek, nebo když je na jednom z jeho následných prvků stisknuto tlačítko polohovacího zařízení, které nepodporuje vznášení. | Ne | Ano | |
ukazovátko | onpointerleave | Vystřelí, když je ukazovací zařízení přesunuto od prvku, nebo když je uvolněno tlačítko ukazovacího zařízení, které nepodporuje vznášení, nad jeho následnými prvky. | Ne | Ano | |
dostalpointercapture | ongotpointercapture | Vyvolá se, když je ukazatel zachycen metodou setPointerCapture. | Ano | Ne | |
lostpointercapture | onlostpointercapture | Vyvolá se, když je ukazatel uvolněn metodou releasePointerCapture. | Ano | Ne |
Události uživatelského rozhraní Indie[11]
Dosud není skutečně implementováno, pracovní skupiny uživatelského rozhraní Indie chtějí pomoci vývojářům webových aplikací, aby mohli podporovat standardní události interakce s uživateli, aniž by museli zpracovávat různé technické události specifické pro platformu, které by se s nimi mohly shodovat.
Skriptování použitelných rozhraní může být obtížné, zvláště když se vezme v úvahu, že návrhové vzory uživatelského rozhraní se liší mezi softwarovými platformami, hardwarem a národními prostředími a že tyto interakce lze dále přizpůsobit na základě osobních preferencí. Jednotlivci jsou zvyklí na to, jak rozhraní funguje na jejich vlastním systému, a jejich preferované rozhraní se často liší od rozhraní preferovaného autorem webové aplikace.
Například autoři webových aplikací, kteří chtějí zachytit záměr uživatele vrátit zpět poslední akci, musí „poslouchat“ všechny následující události:
- Control + Z ve Windows a Linux.
- Command + Z v systému Mac OS X.
- Potřesení událostí na některých mobilních zařízeních.
Bylo by jednodušší poslouchat jediný normalizovaný požadavek na „vrácení“ předchozí akce.
Kategorie | Typ | Popis | Bubliny | Zrušitelné |
---|---|---|---|---|
Žádost | nepožádání | Označuje, že si uživatel přeje „vrátit“ předchozí akci. (Může být nahrazeno rozhraním UndoManager.) | Ano | Ano |
dožádání | Označuje, že uživatel si přeje „znovu“ provést předchozí akci „vrátit zpět“. (Může být nahrazeno rozhraním UndoManager.) | Ano | Ne | |
rozšířit požadavek | Označuje, že si uživatel přeje odhalit informace ve sbalené části (např. Widget zpřístupnění) nebo v uzlu větve v hierarchii (např. Stromové zobrazení). | Ano | Ano | |
požadavek na kolaps | Označuje, že si uživatel přeje skrýt nebo sbalit informace v rozbalené sekci (např. Widget zpřístupnění) nebo uzlu větve v hierarchii (např. Stromové zobrazení). | Ano | Ano | |
zamítnout žádost | Označuje, že uživatel si přeje „zavřít“ aktuální zobrazení (např. Zrušení dialogu nebo zavření rozbalovací nabídky). | Ano | Ano | |
vymazat požadavek | Označuje, že uživatel chce zahájit akci „odstranění“ u označeného prvku nebo aktuálního pohledu. | Ano | Ano | |
Zaměření požadavku | požadavek na směrové zaostření | Iniciováno, když uživatelský agent odešle webové aplikaci žádost o „zaměření zaměření“. Autoři webu by neměli používat nebo se registrovat pro události directionalfocusrequest, když stačí standardní akce zaostření a rozmazání prohlížeče. Zbytečné používání těchto událostí by mohlo mít za následek snížený výkon nebo negativní uživatelskou zkušenost. | Ano | Ano |
požadavek na lineární zaostření | Iniciováno, když uživatelský agent odešle webové aplikaci žádost o „lineární zaměření“. Autoři webu by neměli používat nebo se registrovat pro události linearfocusrequest, když jsou dostatečné standardní události zaostření a rozmazání prohlížeče. Tento typ události je nutný pouze na specializovaných typech ovládacích prvků, jako jsou datové mřížky, kde logický další prvek nemusí být zaostřitelný nebo dokonce v modelu DOM, dokud není vyžadován. Zbytečné používání těchto událostí by mohlo mít za následek snížený výkon nebo negativní uživatelskou zkušenost. | Ano | Ano | |
žádost o paletu | Iniciováno, když uživatelský agent odešle webové aplikaci žádost o „zaměření palety“. Autoři webových aplikací přijímající tuto událost by měli přesunout fokus na první paletu ve webové aplikaci nebo cyklicky fokus mezi všemi dostupnými paletami. Poznámka: palety se někdy označují jako nemodální dialogy nebo okna inspektorů. | Ano | Ano | |
toolbarfocusrequest | Iniciováno, když uživatelský agent odešle webové aplikaci žádost o „zaměření panelu nástrojů“. Autoři webových aplikací přijímající tuto událost by měli přesunout fokus na hlavní panel nástrojů ve webové aplikaci nebo cyklicky fokus mezi všemi dostupnými panely nástrojů. | Ano | Ano | |
Žádost o manipulaci | moverequest | Iniciováno, když uživatelský agent odešle požadavek na přesun do webové aplikace s doprovodnými hodnotami x / y delta. Používá se to například při přesunu objektu do nového umístění na plátně rozložení. | Ano | Ano |
panrequest | Iniciováno, když uživatelský agent odešle požadavek na posun do webové aplikace s doprovodnými hodnotami x / y delta. Používá se to například při změně středového bodu při posouvání mapy nebo jiného vlastního prohlížeče obrázků. | Ano | Ano | |
požadavek na rotaci | Iniciováno, když uživatelský agent odešle žádosti o rotaci webové aplikaci s doprovodnými hodnotami počátku x / y a hodnotou rotace ve stupních. | Ano | Ano | |
zoomrequest | Iniciováno, když uživatelský agent odešle žádosti o přiblížení webové aplikaci s doprovodnými hodnotami počátku x / y a měřítkem zvětšení. | Ano | Ano | |
Přejděte na požadavek | vyhledávací požadavek | Iniciováno, když uživatelský agent odešle požadavek na posouvání do webové aplikace s doprovodnými hodnotami x / y delta nebo s jednou z dalších definovaných hodnot scrollType. Autoři by měli tuto událost a uiaction používat pouze s vlastními zobrazeními posouvání. | Ano | Ano |
Žádost o změnu | požadavek na změnu hodnoty | Iniciováno, když uživatelský agent odešle žádosti o změnu hodnoty do webové aplikace. Používá se na vlastních ovládacích prvcích rozsahu, jako jsou posuvníky, karusel atd. | Ano | Ano |
Události specifické pro Internet Explorer
Kromě běžných (W3C) událostí přidává dva hlavní typy událostí internet Explorer. Některé z akcí byly implementovány jako de facto standardy jinými prohlížeči.
- Schránka Události.
- Události vázání dat.[je zapotřebí objasnění ]
Kategorie | Typ | Atribut | Popis | Bubliny | Zrušitelné |
---|---|---|---|---|---|
Schránka | střih | oncut | Vystřelí poté, co je výběr vystřižen do schránky. | Ano | Ano |
kopírovat | oncopy | Spustí se po zkopírování výběru do schránky. | Ano | Ano | |
vložit | na pastu | Spustí se po vložení výběru ze schránky. | Ano | Ano | |
vykonat | onbeforecut | Spustí se, než se výběr přesune do schránky. | Ano | Ano | |
před kopií | před kopií | Spustí se před zkopírováním výběru do schránky. | Ano | Ano | |
před vložením | onbeforepaste | Spustí se před vložením výběru ze schránky. | Ano | Ano | |
Vazba dat | afterupdate | onafterupdate | Spustí se okamžitě po aktualizaci databázového objektu. | Ano | Ne |
před aktualizací | před aktualizací | Spustí se před aktualizací zdroje dat. | Ano | Ano | |
výměna buněk | jednouzměna | Spustí se, když se změnil zdroj dat. | Ano | Ne | |
data k dispozici | ondataavailable | Spustí se, když budou k dispozici nová data ze zdroje dat. | Ano | Ne | |
datasetchanged | ondatasetchanged | Spustí se, když se změnil obsah ve zdroji dat. | Ano | Ne | |
datová sada úplná | ondatasetcomplete | Vyvolá se po dokončení přenosu dat ze zdroje dat. | Ano | Ne | |
errorupdate | onerrorupdate | Spustí se, pokud dojde k chybě při aktualizaci datového pole. | Ano | Ne | |
veslař | onrowenter | Vyvolá se, když je k dispozici nový řádek dat ze zdroje dat. | Ano | Ne | |
řádekexit | onrowexit | Spustí se, když právě skončila řada dat ze zdroje dat. | Ne | Ano | |
odstranit řádky | onrowsdelete | Vyvolá se, když je odstraněna řada dat ze zdroje dat. | Ano | Ne | |
vloženo do řádku | vloženo | Vyvolá se, když je vložena řada dat ze zdroje dat. | Ano | Ne | |
Myš | kontextová nabídka | oncontextmenu | Spustí se, když se zobrazí místní nabídka. | Ano | Ano |
táhnout | ondrag | Požáry, když během tažení myší (na pohyblivém prvku). | Ano | Ano | |
dragstart | ondragstart | Vystřelí, když začne táhnout myší (na pohybujícím se prvku). | Ano | Ano | |
dragenter | ondragenter | Vystřelí, když je něco přetaženo do oblasti (na cílovém prvku). | Ano | Ano | |
dragover | ondragover | Vystřelí, když je tažen držen nad oblastí (na cílovém prvku). | Ano | Ano | |
dragleave | ondragleave | Vystřelí, když je něco vytaženo z oblasti (na cílovém prvku). | Ano | Ano | |
dragend | ondragend | Vystřelí, když přetažení myši skončí (na pohybujícím se prvku). | Ano | Ano | |
pokles | ondrop | Vystřelí, když během přetažení uvolníte tlačítko myši nad platným cílem (na cílovém prvku). | Ano | Ano | |
selectstart | onselectstart | Spustí se, když uživatel začne vybírat text. | Ano | Ano | |
Klávesnice | Pomoc | onhelp | Spustí se, když uživatel zahájí pomoc. | Ano | Ano |
Rámec / objekt HTML | před vyložením | před vyložením | Spustí se před uvolněním dokumentu. | Ne | Ano |
stop | onstop | Spustí se, když uživatel přestane načítat objekt. (na rozdíl od přerušení lze k dokumentu připojit událost stop) | Ne | Ne | |
Formulář HTML | před úpravou zaostření | před tím, než se zaměříte | Vystřelí dříve, než prvek získá pozornost pro úpravy. | Ano | Ano |
Stan | Start | začít | Spustí se, když rámeček začne novou smyčku. | Ne | Ne |
Dokončit | onfinish | Spustí se, když je smyčka výřezu dokončena. | Ne | Ano | |
odskočit | onbounce | Vystřelí, když se rolovací rámeček odrazí zpět v opačném směru. | Ne | Ano | |
Smíšený | předtisk | před tiskem | Spustí se před vytištěním dokumentu | Ne | Ne |
afterprint | onprint | Spustí se okamžitě po vytištění dokumentu. | Ne | Ne | |
změna majetku | onpropertychange | Vyvolá se, když se změní vlastnost objektu. | Ne | Ne | |
výměna filtru | onfilterchange | Spustí se, když filtr změní vlastnosti nebo dokončí přechod. | Ne | Ne | |
readystatechange | onreadystatechange | Vyvolá se, když se změní vlastnost readyState prvku. | Ne | Ne | |
ztratit zachycení | onlosecapture | Vyvolá se, když je vyvolána metoda releaseCapture. | Ne | Ne |
Všimněte si, že Mozilla, Safari a Opera také podporují událost readystatechange pro XMLHttpRequest objekt. Mozilla také podporuje událost beforeunload pomocí tradiční metody registrace události (DOM úroveň 0). Mozilla a Safari také podporují kontextovou nabídku, ale Internet Explorer pro Mac nikoli.
Upozorňujeme, že Firefox 6 a novější podporují události před tiskem a následným tiskem.
XUL události
Kromě běžných událostí (W3C) definovala Mozilla sadu událostí, které fungují pouze s XUL elementy.[Citace je zapotřebí ]
Kategorie | Typ | Atribut | Popis | Bubliny | Zrušitelné |
---|---|---|---|---|---|
Myš | DOMMouseScroll | DOMMouseScroll | Vyvolá se při pohybu kolečka myši, což způsobí posouvání obsahu. | Ano | Ano |
dragdrop | ondragdrop | Spustí se, když uživatel uvolní tlačítko myši na přetáhněte tažený objekt. | Ne | Ne | |
dragenter | ondragenter | Spustí se, když se ukazatel myši během tažení nejprve přesune nad prvek. Je to podobné jako událost mouseover, ale dochází k ní při přetahování. | Ne | Ne | |
dragexit | ondragexit | Spustí se, když se ukazatel myši během tažení vzdálí od prvku. Nazývá se také po přetažení prvku. Je to podobné jako událost myši, ale dojde k ní během tažení. | Ne | Ne | |
draggesture | ondraggesture | Spustí se, když uživatel začne táhnout prvek, obvykle podržením tlačítka myši a pohybem myši. | Ne | Ne | |
dragover | ondragover | V souvislosti s událostí mousemove je tato událost spuštěna, když je něco přetahováno přes prvek. | Ne | Ne | |
Vstup | CheckboxStateChange | Spustí se, když je zaškrtnuto nebo zrušeno zaškrtnutí políčka uživatelem nebo skriptem. | Ne | Ne | |
RadioStateChange | Spustí se, když uživatel vybere přepínač nebo skript. | Ne | Ne | ||
zavřít | onclose | Vyvolá se, když byla podána žádost o zavření okna. | Ne | Ano | |
příkaz | na příkaz | Podobně jako událost W3C DOMActivate. Spustí se, když je prvek aktivován, například pomocí kliknutí myší nebo stisknutí klávesy. | Ne | Ne | |
vstup | na vstupu | Spustí se, když uživatel zadá text do textového pole. | Ano | Ne | |
Uživatelské rozhraní | DOMMenuItemActive | DOMMenuItemActive | Spustí se, když je nabídka nebo položka nabídky vznášel se nad nebo zvýrazněné. | Ano | Ne |
DOMMenuItemInaactive | DOMMenuItemInaactive | Spustí se, když nabídka nebo položka nabídky již není umístěna nad nebo zvýrazněna. | Ano | Ne | |
kontextová nabídka | oncontextmenu | Vyvolá se, když uživatel požádá o otevření kontextové nabídky pro prvek. Akce se liší podle platformy, ale obvykle to bude pravé kliknutí. | Ne | Ano | |
přetékat | přepad | Vyvolá krabici nebo jiný prvek rozvržení, pokud není dostatek místa k zobrazení v plné velikosti. | Ne | Ne | |
přepadl | onoverflowzměněno | Vyvolá se, když se změní stav přetečení. | Ne | Ne | |
podtečení | onflowflow | Vystřelí na prvek, když je k dispozici dostatek místa pro jeho zobrazení v plné velikosti. | Ne | Ne | |
vyskakovací | onpopuphidden | Spustí se do vyskakovacího okna poté, co bylo skryto. | Ne | Ne | |
vyskakovací okno | skrývání | Spustí se do vyskakovacího okna, když má být skryto. | Ne | Ne | |
vyskakovací okno | onpopupshooking | Spustí se do vyskakovacího okna těsně před otevřením. | Ne | Ano | |
vyskakovací okno | zobrazeno | Spustí se do vyskakovacího okna po jeho otevření, podobně jako se událost onload odešle do okna, když se otevře. | Ne | Ne | |
Příkaz | přenos | onbroadcast | Umístěn na pozorovatele. Událost všesměrového vysílání se odešle, když se změní atributy poslouchaného vysílacího subjektu. | Ne | Ne |
datum aktualizace | oncommandupdate | Spustí se, když dojde k aktualizaci příkazu. | Ne | Ne |
Další akce
Pro Mozillu a Opera 9 existují také nezdokumentované události známé jako DOMContentLoaded a DOMFrameContentLoaded které se spustí při načtení obsahu DOM. Liší se od „načtení“, protože se spouští před načtením souvisejících souborů (např. Obrázků). DOMContentLoaded však byl přidán do HTML 5 Specifikace.[12]Událost DOMContentLoaded byla také implementována v Webkit vykreslování sestavení motoru 500+.[13][14] To koreluje se všemi verzemi Google Chrome a Safari 3.1+. DOMContentLoaded je také implementován v Internet Explorer 9.[15]
Opera 9 také podporuje události Web Forms 2.0 DOMControlValueChanged, neplatný, vstup a výměna formulářů.
Tok událostí
Zvažte situaci, kdy jsou 2 prvky vnořené společně. Oba mají obslužné rutiny událostí registrované pro stejný typ události, řekněme „klikni“. Když uživatel klikne na vnitřní prvek, existují dva možné způsoby, jak s ním zacházet:
- Spustit prvky z vnějšího na vnitřní (zachycení události). Tento model je implementován v Netscape Navigator.
- Spustit prvky z vnitřního na vnější (probublávání událostí ). Tento model je implementován v prohlížeči Internet Explorer a dalších prohlížečích.[16]
W3C zaujímá v tomto boji střední pozici.[17]:§1.2 Události jsou nejprve zachyceny, dokud nedosáhne cílového prvku, a poté probublávají. Během toku události lze na událost reagovat na kterémkoli prvku v cestě (pozorovatel) v kterékoli fázi vyvoláním akce a / nebo zastavením události (metodou event.stopPropagation () pro prohlížeče a příkazy vyhovující standardu W3C event.cancelBubble = true pro Internet Explorer) a / nebo zrušením výchozí akce pro událost.
Objekt události
Objekt Událost poskytuje mnoho informací o konkrétní události, včetně informací o cílovém prvku, stisknutém tlačítku, stisknutém tlačítku myši, poloze myši atd. V této oblasti bohužel existují velmi závažné nekompatibility prohlížeče. Proto je v tomto článku popsán pouze objekt události W3C.
název | Typ | Popis |
---|---|---|
typ | Řetězec DOMS | Název události (malá a velká písmena na úrovni DOM 2, ale malá a velká písmena na úrovni DOM 3) [18]). |
cílová | EventTarget | Slouží k označení EventTarget, do kterého byla událost původně odeslána. |
currentTarget | EventTarget | Používá se k označení EventTarget, jehož EventListeners se aktuálně zpracovávají. |
eventPhase | bez znaménka krátký | Slouží k označení, která fáze toku událostí se aktuálně vyhodnocuje. |
bubliny | booleovský | Slouží k označení, zda událost je bublinkovou událostí. |
zrušitelný | booleovský | Slouží k označení, zda lze události zabránit v její výchozí akci. |
časové razítko | DOMTimeStamp | Slouží k určení času (v milisekundách vzhledem k epochě), kdy byla událost vytvořena. |
název | Typ argumentu | Název argumentu | Popis |
---|---|---|---|
stopPropagation | Aby se zabránilo dalšímu šíření události během toku událostí. | ||
preventDefault | Chcete-li událost zrušit, pokud je zrušitelná, znamená to, že nedojde k žádné výchozí akci, kterou obvykle provede implementace v důsledku události. | ||
initEvent | Řetězec DOMS | eventTypeArg | Určuje typ události. |
booleovský | canBubbleArg | Určuje, zda může událost probublávat. | |
booleovský | cancelableArg | Určuje, zda lze zabránit výchozí akci události. |
Modely zpracování událostí
DOM úrovně 0
Tento model zpracování událostí představil Netscape Navigator a zůstává nejmodernějším modelem pro různé prohlížeče od roku 2005[Aktualizace].[Citace je zapotřebí ] Existují dva typy modelů: vložený model a tradiční model.
Vložený model
V inline modelu[19] obslužné rutiny událostí jsou přidány jako atributy prvků. V níže uvedeném příkladu an výstražné dialogové okno se zprávou „Hey Joe“ se objeví po hypertextový odkaz je kliknuto. Výchozí akce kliknutí se zruší vrácením false v obslužné rutině události.
<!doctype html><html jazyk=„cs“><hlava> <meta znaková sada="utf-8"> <titul>Inline zpracování událostí</titul></hlava><tělo> <h1>Inline zpracování událostí</h1> <str>Ahoj <A href=„http://www.example.com“ při kliknutí="triggerAlert ('Joe'); return false;">Joe</A>!</str> <skript> funkce triggerAlert(název) { okno.výstraha("Ahoj " + název); } </skript></tělo></html>
Jedna běžná mylná představa[Citace je zapotřebí ] s vloženým modelem je víra, že umožňuje registraci obslužných rutin událostí s vlastními argumenty, např. název
v triggerAlert
funkce. I když se může zdát, že tomu tak je ve výše uvedeném příkladu, ve skutečnosti se děje to, že JavaScriptový engine prohlížeče vytvoří anonymní funkce obsahující prohlášení v při kliknutí
atribut. The při kliknutí
obslužná rutina prvku by byla vázána na následující anonymní funkci:
funkce () { triggerAlert('Joe'); vrátit se Nepravdivé;}
Toto omezení modelu události JavaScriptu je obvykle překonáno přiřazením atributů k funkčnímu objektu obslužné rutiny události nebo použitím uzávěry.
Tradiční model
V tradičním modelu[20] obslužné rutiny událostí lze přidávat nebo odebírat skripty. Stejně jako vložený model může mít každá událost zaregistrovanou pouze jednu obslužnou rutinu události. Událost je přidána přiřazením názvu obslužné rutiny vlastnosti události objektu prvku. Chcete-li odebrat obslužnou rutinu události, jednoduše nastavte vlastnost na null:
<!doctype html><html jazyk=„cs“><hlava> <meta znaková sada="utf-8"> <titul>Tradiční zpracování událostí</titul></hlava><tělo> <h1>Tradiční zpracování událostí</h1> <str>Ahoj Joe!</str> <skript> var triggerAlert = funkce () { okno.výstraha(„Hej Joe“); }; // Přiřaďte obslužnou rutinu události dokument.při kliknutí = triggerAlert; // Přiřadit další obslužnou rutinu události okno.onload = triggerAlert; // Odebrání obslužné rutiny události, která byla právě přiřazena okno.onload = nula; </skript></tělo></html>
Přidání parametrů:
var název = 'Joe';dokument.při kliknutí = (funkce (název) { vrátit se funkce () { výstraha('Ahoj ' + název + '!'); };}(název));
Vnitřní funkce zachovávají jejich rozsah.
DOM úrovně 2
W3C navrhl pružnější model zpracování událostí v DOM úrovni 2.[17]
název | Popis | Typ argumentu | Název argumentu |
---|---|---|---|
addEventListener | Umožňuje registraci posluchačů událostí na cíl události. | Řetězec DOMS | typ |
EventListener | posluchač | ||
booleovský | useCapture | ||
removeEventListener | Umožňuje odebrání posluchačů událostí z cíle události. | Řetězec DOMS | typ |
EventListener | posluchač | ||
booleovský | useCapture | ||
ExpediceEvent | Umožňuje odeslání události posluchačům přihlášených událostí. | událost | evt |
Několik užitečných věcí, které byste měli vědět:
- Aby vývojáři nebublili, musí vývojáři zavolat na
stopPropagation ()
metoda objektu události. - Aby se zabránilo výchozí akci události, která má být volána, musí vývojáři zavolat
preventDefault ()
metoda objektu události.
Hlavní rozdíl od tradičního modelu spočívá v tom, že pro stejnou událost lze zaregistrovat více obslužných rutin událostí. The useCapture
Možnost lze také použít k určení, že obslužná rutina by měla být volána ve fázi zachycení místo fáze probublávání. Tento model podporuje Mozilla, Opera, Safari, Chrome a Konqueror.
Přepis příkladu použitého v tradičním modelu
<!doctype html><html jazyk=„cs“><hlava> <meta znaková sada="utf-8"> <titul>DOM úrovně 2</titul></hlava><tělo> <h1>DOM úrovně 2</h1> <str>Ahoj Joe!</str> <skript> var hej jo = funkce () { okno.výstraha(„Ahoj Joe!“); } // Přidat obslužnou rutinu události dokument.addEventListener( „kliknout“, hej jo, skutečný ); // fáze zachycení // Přidat další obslužnou rutinu události okno.addEventListener( "zatížení", hej jo, Nepravdivé ); // probublávací fáze // Odebrání právě přidaného obslužného programu události okno.removeEventListener( "zatížení", hej jo, Nepravdivé ); </skript></tělo></html>
Specifický model pro Internet Explorer
Microsoft Internet Explorer před verzí 8 nenásleduje model W3C, protože jeho vlastní model byl vytvořen před ratifikací standardu W3C. Internet Explorer 9 sleduje události DOM úrovně 3,[21] a Internet Explorer 11 ruší podporu pro model specifický pro Microsoft.[22]
název | Popis | Typ argumentu | Název argumentu |
---|---|---|---|
attachEvent | Podobně jako metoda addEventListener od W3C. | Tětiva | sEvent |
Ukazatel | fpNotify | ||
detachEvent | Podobně jako metoda removeEventListener od W3C. | Tětiva | sEvent |
Ukazatel | fpNotify | ||
fireEvent | Podobně jako metoda W3C dispatchEvent. | Tětiva | sEvent |
událost | oEventObject |
Několik užitečných věcí, které byste měli vědět:
- Aby vývojáři nebublili, musí vývojáři událost nastavit
cancelBubble
vlastnictví. - Aby se zabránilo výchozí akci události, která má být volána, vývojáři musí nastavit událost
návratová hodnota
vlastnictví. - The
tento
klíčové slovo odkazuje na globálníokno
objekt.
Opět se tento model liší od tradičního modelu v tom, že pro stejnou událost lze zaregistrovat více obslužných rutin událostí. Nicméně useCapture
Možnost nelze použít k určení, že obslužná rutina by měla být volána ve fázi zachycení. Tento model je podporován společností Microsoft internet Explorer a Prohlížeče založené na trojzubci (např. Maxthon, Prohlížeč Avant ).
Přepis příkladu použitého ve starém modelu specifickém pro Internet Explorer
<!doctype html><html jazyk=„cs“><hlava> <meta znaková sada="utf-8"> <titul>Specifický model pro Internet Explorer</titul></hlava><tělo> <h1>Specifický model pro Internet Explorer</h1> <str>Ahoj Joe!</str> <skript> var hej jo = funkce () { okno.výstraha(„Ahoj Joe!“); } // Přidat obslužnou rutinu události dokument.attachEvent("při kliknutí", hej jo); // Přidat další obslužnou rutinu události okno.attachEvent("onload", hej jo); // Odebrání právě přidaného obslužného programu události okno.detachEvent("onload", hej jo); </skript></tělo></html>
Reference
- Deitel, Harvey. (2002). Internet a World Wide Web: jak programovat (Druhé vydání). ISBN 0-13-030897-8
- Organizace Mozilla. (2009). Reference události DOM. Citováno 25. srpna 2009.
- Quirksmode (2008). Tabulky kompatibility událostí. Citováno 27. listopadu 2008.
- http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/
externí odkazy
- Specifikace událostí úrovně 2 dokumentu Object Model (DOM)
- Události pracovního dokumentu událostí modelu modelu (DOM) úrovně 3
- DOM4: Události (návrh redakce)
- Pracovní koncept událostí uživatelského rozhraní
- Pointer Events W3C Candidate Doporučení
- MSDN PointerEvent
- JS housle pro bublání a zachycování událostí
Reference
- ^ „Události DOM v JavaScriptu“. www.w3schools.com. Citováno 2019-08-03.
- ^ "7.8 Přetažení - HTML5".
- ^ „HTML Drag and Drop API“.
- ^ „Pokrokové události“.
- ^ "File API".
- ^ https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event
- ^ „Specifikace událostí na úrovni objektu dokumentu (DOM) úrovně 3 (pracovní koncept)“. W3C. Citováno 2013-04-17.
- ^ A b C „Touch Events verze 2 - koncept editoru W3C“. W3C. 14. listopadu 2011. Citováno 10. prosince 2011.
- ^ „Apple pomocí patentů znovu podkopává otevřené standardy“. opera.com. 9. prosince 2011. Citováno 9. prosince 2011.
- ^ „Pointer Events“.
- ^ „IndieUI: Events 1.0“.
- ^ https://www.w3.org/TR/html5/
- ^ [1] Archivováno 11. června 2010 v Wayback Machine
- ^ „Které prohlížeče podporují nativní událost DOMContentLoaded?« Tipy pro vývoj laboratoří Perfection Labs “. 29. června 2011. Archivovány od originálu dne 29. června 2011.CS1 maint: BOT: stav původní adresy URL neznámý (odkaz)
- ^ „Test Drive Redirect“. Archivovány od originál dne 08.05.2010. Citováno 2010-05-06.
- ^ „Úvod do událostí“. Quirksmode.org. Citováno 15. září 2012.
- ^ A b „Specifikace událostí na úrovni objektu dokumentu (DOM) úrovně 2“. W3C. 13. listopadu 2000. Citováno 15. září 2012.
- ^ „Specifikace událostí na úrovni objektu dokumentu (DOM) úrovně 3 (pracovní koncept)“. W3C. Citováno 2013-04-17.
- ^ „Rané obsluhy událostí“. Quirksmode.org. Citováno 15. září 2012.
- ^ „Tradiční model registrace události“. Quirksmode.org. Citováno 15. září 2012.
- ^ „Podpora událostí DOM úrovně 3 v IE9“. Microsoft. 26. března 2010. Citováno 2010-03-28.
- ^ „Změny kompatibility v náhledu IE11“. Microsoft. 9. září 2013. Citováno 2013-10-05.