Hallöle,
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.
Sch...ade
IE kennt document.activeElement, Firefox wird das künftig auch kennen, ebenso document.currentFocus.
Zukünftig ist schön. Aber was ist mit jetzt?
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).
Werd ich mir mal angucken.
Aber auch DOMFocusOut wird schlecht unterstützt.
Mist.
Gibt's da was fertiges?
Nein.
Sch...ade
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.
1. muß dabei aber noch jeweils berücksichtigt werden, daß evtl. bereits vorhandene Handler weiterhin funktionieren müssen.
2. können auch Elemente nachträglich zum Dokument hinzugefügt werden.
3. können auch andere Scripte die onfocus/onblur-Handler ändern/entfernen
Punkt 1 ließe sich noch handhaben, indem zuerst meine Aktion ausgeführt wird, dann der vorher vorhandene Handler.
Punkt 2 und 3 ließen sich m.W. nur handhaben, indem regelmäßig (setInterval) der Baum durchlaufen wird und ggf. die Handler "repariert" werden ...
Nicht grade schön.
cu,
Robert