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. 21.6.2019, Matej LednárKategória: JavaScriptJavaScript,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.