molily: node.hasFocus() oder ähnliches gesucht ...

Beitrag lesen

Hallo,

kann ich irgendwie feststellen, ob ein Element im Dokument den Fokus hat, ohne daß ich diesen Status bei onfocus selbst setze (und bei onblur lösche)?

Nein, nicht browserübergreifend und zuverlässig.

Oder noch besser, ob das Element oder eines seiner Kinder/Enkel/Urenkel/...

Ganz perfekt wäre natürlich, wenn es dafür auch noch events gäbe, also ein erweitertes onfocus, das nicht nur auslöst, wenn das Element selbst den Fokus bekommt, sondern auch dann, wenn eines der Nachfahrenelemente den Fokus bekommt.

Es gibt dafür den aufsteigenden Event DOMFocusIn, den aber nur wenige Browser unterstützen (Opera und Konqueror soweit ich weiß).

IE kennt document.activeElement, Firefox wird das künftig auch kennen, ebenso document.currentFocus.

Und ein erweitertes onblur, das erst dann auslöst, wenn der Fokus irgendwohin außerhalb des Elements und außerhalb seiner Nachfahrenelemente landet.

Das könntest du dir über DOMFocusOut basteln (überprüfen, ob das Zielelement außerhalb eines bestimmten Elements liegt, über contains, Workaround für Gecko).
Aber auch DOMFocusOut wird schlecht unterstützt.

Gibt's da was fertiges?

Nein.

Oder muß ich selbst was basteln?

Ja.

Was ja darauf rausliefe, praktisch jedem Element des Dokuments onfocus/onblur-Handler zu verpassen ...

Nunja, nicht alle Elemente sind fokussierbar, außerdem ist es nicht sonderlich schwer, das Dokument automatisch zudurchlaufen und diese Handler zu vergeben.

Mathias