node.hasFocus() oder ähnliches gesucht ...
Robert
- javascript
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)?
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. Und ein erweitertes onblur, das erst dann auslöst, wenn der Fokus irgendwohin außerhalb des Elements und außerhalb seiner Nachfahrenelemente landet.
Gibt's da was fertiges? Oder muß ich selbst was basteln? Was ja darauf rausliefe, praktisch jedem Element des Dokuments onfocus/onblur-Handler zu verpassen ...
cu,
Robert
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
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
hi,
- können auch Elemente nachträglich zum Dokument hinzugefügt werden.
- können auch andere Scripte die onfocus/onblur-Handler ändern/entfernen
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 ...
Punkt 2 ließe sich handhanben, in dem du beim erzeugen und einfügen neuer Elemente jedes mal daran denkst, diesen auch eine entsprechende Eventbehandlung zu verpassen.
Und Punkt 3 erfordert eine sorgfältige Scriptauswahl, damit sowas nicht vorkommt.
gruß,
wahsaga
Hallöle,
- können auch Elemente nachträglich zum Dokument hinzugefügt werden.
- können auch andere Scripte die onfocus/onblur-Handler ändern/entfernen
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 ...
Punkt 2 ließe sich handhanben, in dem du beim erzeugen und einfügen neuer Elemente jedes mal daran denkst, diesen auch eine entsprechende Eventbehandlung zu verpassen.
Und Punkt 3 erfordert eine sorgfältige Scriptauswahl, damit sowas nicht vorkommt.
Mein Script stellt verschiedene Eingabehilfen dar und sollte möglichst abgeschlossen in sich sein.
Z.B. für ein Eingabefeld, das ein Datum aufnehmen soll, wird im entsprechenden input nur im class-Attribut die Klasse "datumseingabe" notiert.
Mein script sucht den Baum durch nach solchen inputs, und wenn es sie findet, ergänzt es sie um einen Button, der die Eingabehilfe (ein Monats-Kalender mit der Möglichkeit, Jahr und Monat vorzugeben, um dann eine Kalenderansicht dieses Monats zu haben mit Buttons für die Tage, bei Klick auf einen der Tagesbuttons wird das Datum übernommen und die Eingabehilfe verschwindet).
Jetzt hätte ich es halt gerne noch, daß meine Eingabehilfe auch verschwindet, wenn der Fokus sonstwohin wandert - ähnlich wie ein ausgeklapptes select-Element bei Fokusverlust zugeklappt wird.
Ich hab im Endeffekt wenig bis keinen Einfluß auf die weiteren in den Dokumenten eingesetzten Scripte, da ich noch nichtmal weiß, in welche Dokumente das mal eingebaut werden wird.
cu,
Robert
hi,
Jetzt hätte ich es halt gerne noch, daß meine Eingabehilfe auch verschwindet, wenn der Fokus sonstwohin wandert - ähnlich wie ein ausgeklapptes select-Element bei Fokusverlust zugeklappt wird.
Ich hab im Endeffekt wenig bis keinen Einfluß auf die weiteren in den Dokumenten eingesetzten Scripte, da ich noch nichtmal weiß, in welche Dokumente das mal eingebaut werden wird.
Dann formuliere Bedingungen und/oder Anforderungen für den Einsatz des Scriptes.
Werden sie eingehalten, fein - andernfalls nicht dein Problem.
gruß,
wahsaga
Hallöle,
Jetzt hätte ich es halt gerne noch, daß meine Eingabehilfe auch verschwindet, wenn der Fokus sonstwohin wandert - ähnlich wie ein ausgeklapptes select-Element bei Fokusverlust zugeklappt wird.
Scherzkeks. Daß es onblur gibt, weiß ich. Es hilft mir aber - siehe Ausgangsposting - nicht weiter, da ich nicht ein einziges Element habe, sondern viele Kind-Elemente, Enkel-Elemente usw.
Und ich kann ja eben nicht einfach feststellen, welches Element aktuell den Fokus hat, also auch nicht, ob mein Haupt-Element unsichtbar werden muß oder nicht.
Dann formuliere Bedingungen und/oder Anforderungen für den Einsatz des Scriptes.
Wenn ich das dürfte, wär das ganze kein Problem ...
cu,
Robert