×
Creating solutions

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>
No part of this article may be reproduced without mention of the author and URL to this website.
For more information, see the About section.

Comments

Article has no comments.

Add a comment

Name (required)
Website
Message (required)
Submit
From latest