×
Vytvárame riešenia

Prečo je po volaní metódy focus() focus priradený elementu <body>?

Už v minulosti, ale aj v súčasnosti som mal problém, že sa mi focus nastavuje na element body a nie na definovaný element. Nevedel som zistiť, kto mi nastavuje focus na element <body> a prečo, keďže som skúšal aj setTimeout(), no výsledok bol rovnaký. Ešte zaujímavejšie bolo, že odchytávam focus event na elemente <body>, no nikdy mi tam debugger neskočí.
Nakoniec som zistil, že element, ktorý som si registroval pre focus, bol element, ktorý sa pred volaním focusu odstráni.
V tomto prípade som si nevšimol, že pri uchovávaní odkazu na element pre budúci focus sa mi uchovával “rovnaký widget”, no v skutočnosti z iného miesta, ktoré je neskôr odstránené. Trochu som podcenil informáciu, že po kliknutí na node sa mi neosvietil v dokumente. Myslel som si, že je to kvôli overlay-u a dialogu, ktorý tvoria ďalšie vrstvy.
Preto nesmiem zabúdať, že ak viditeľný node nie je označení v dokumente, tak pracujem s iným elementom.

Záver

Ak po aplikovaní metódy focus() je focus priradený elementu <body>, tak najskôr bude problém v tom, že sa focus volá na elemente, ktorý už neexistuje. Preto je dobré skontrolovať existenciu elementu, na ktorý chcem spraviť focus.


JavaScript,focus(),focus,element,node. DOMNode,<body>
Žiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.
Viac informácií nájdete v sekcii O projekte.

Komentáre

Článok neobsahuje zatiaľ žiadne komentáre.

Pridať komentár

Meno (povinné)
Web
Správa (povinné)
Odoslať
Od najnovších