Rychlé kliknutí a vyvolání události

Problém

Ovládací prvky běžných JS aplikací zpravidla provádějí nějakou událost při kliknutí myši (onclick).

Kliknout

Co nepěkného se může stát? V situaci, kdy uživatel bude chtít kliknout na více věcí v rychlém sledu, se snadno stane, že pohyb myši v momentě kliknutí událost onclick nespustí.

Toto může nastat ve třech reálných případech:

  1. uživatel tlačítko myši stlačí, potom si uvědomí, že kliknout nechce, a tak odjede pryč, aby akci nevyvolal,
  2. uživatel je tak rychlý, že chce na prvky klikat za jízdy, tudíž akci nevyvolá,
  3. uživatel má problémy s přesností a kliknutí bez (lehkého) posunu myši je pro něj obtížné.

Kromě bodu 1 jsou to situace nežádoucí. A nepomůže ani použití tlačítka (<button>) nebo odkazu.

Kliknout odkazem

Řešení

Odstranit tento problém umí událost onmousedown.

Kliknout odkazem

Výhodné to může být i v rychlosti aplikace (onmousedown člověk provede běžně o desítky milisekund dříve než onclick). Problém ale je v rozmyslení si kliknutí.

Docela funkční mi přijde postup, kdy se při onmousedown požadovaná akce připraví do onmouseup (puštění tlačítka nad elementem) a onmouseout (odjetí myší z elementu). A z onmouseout se akce po nějaké době (cca 80 milisekund) vyhodí časovačem.

Živá ukázka srovnávající oba přístupy.

Pokud se výsledek akce má získávat AJAXem, nabízí se požadavek na soubor zavolat již při onmousedown, ale zobrazit až při potvrzení kliknutí (onmouseup/onmouseout).

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Jak vytvořit WYSIWYG editor

Vlastní jednoduchý WYSIWYG editor

Chceme-li na webu zadávat text a běžná <textarea> už nestačí, řešením je napsat si vlastní WYSIWYG editor.

Detekce zapnutého JavaScriptu

Zapnutý a vypnutý JavaScript

Jak na webové stránce detekovat zapnuté nebo vypnuté skriptování.

CSS vyhledávání a filtrování

CSS vyhledávání a filtrování obsahu

Jak pomocí CSS se špetkou JS filtrovat obsah stránky nebo na ní vyhledávat.

Upozornění před opuštěním stránky

Upozornění před zavřením stránky

Javascriptová událost onbeforeunload umožňuje pozastavit uzavření/obnovení stránky.

Plynulý přesun focusu

Plynulý přesun focusu

Plynulé přesouvání focusu mezi jednotlivými položkami formuláře.

Komentáře