Wie kann ich herausfinden, welches DOM-Element den Fokus hat?

Ich möchte herausfinden, in JavaScript, welches Element derzeit den Fokus hat. Ich habe das DOM durchforstet und habe noch nicht gefunden, was ich brauche. Gibt es eine Möglichkeit, dies zu tun, und wie?

Der Grund, warum ich das gesucht habe:

Ich versuche, Tasten wie die Pfeile und "Enter" durch eine Tabelle von Eingabeelementen navigieren zu lassen. Die Tabulatortaste funktioniert jetzt, aber die Eingabetaste und die Pfeiltasten nicht standardmäßig, wie es scheint. I've got the key handling part set up but now I need to figure out how to move the focus over in the event handling functions.

Lösung

Verwenden Sie document.activeElement, es wird von allen gängigen Browsern unterstützt.

Bisher war es nicht möglich, herauszufinden, welches Formularfeld den Fokus hat. Um die Erkennung in älteren Browsern zu emulieren, fügen Sie einen "focus"-Ereignishandler zu allen Feldern hinzu und speichern das zuletzt fokussierte Feld in einer Variablen. Fügen Sie einen "Unschärfe"-Ereignis-Handler hinzu, um die Variable bei einem Unschärfe-Ereignis für das zuletzt fokussierte Feld zu löschen.

Verwandte Links:

Kommentare (11)

Wie JW schon sagte, können Sie das aktuell fokussierte Element nicht finden, zumindest nicht auf browserunabhängige Weise. Aber wenn Ihre Anwendung nur IE ist (einige sind...), können Sie es auf folgende Weise finden:

document.activeElement

EDIT: Es sieht so aus, als hätte der IE doch nicht alles falsch gemacht, dies ist Teil des HTML5-Entwurfs und scheint zumindest von der neuesten Version von Chrome, Safari und Firefox unterstützt zu werden.

Kommentare (8)

Ich stelle dies hier nur ein, um die Lösung zu nennen, auf die ich schließlich gekommen bin.

Ich habe eine Eigenschaft namens document.activeInputArea erstellt und das HotKeys-Addon von jQuery verwendet, um Tastaturereignisse für Pfeiltasten, Tab und Enter abzufangen, und ich habe einen Event-Handler für das Klicken in Eingabeelemente erstellt.

Dann passte ich die activeInputArea jedes Mal an, wenn sich der Fokus änderte, so dass ich diese Eigenschaft verwenden konnte, um herauszufinden, wo ich war.

Es ist leicht, dies zu vermasseln, weil, wenn Sie einen Fehler im System haben und der Fokus ist nicht, wo Sie denken, es ist, dann ist es sehr schwer, den richtigen Fokus wiederherzustellen.

Kommentare (0)