Ist es möglich, sich auf eine <div>
JavaScript- focus()
Funktion zu konzentrieren?
Ich habe einen <div>
Tag
<div id="tries">You have 3 tries left</div>
Ich versuche mich auf Folgendes zu konzentrieren <div>
:
document.getElementById('tries').focus();
Aber es funktioniert nicht. Könnte jemand etwas vorschlagen ...?
javascript
focus
OM Die Ewigkeit
quelle
quelle
div
können Eingaben akzeptieren, wenn sie überlaufen und eine Bildlaufleiste anzeigen . Wenn eindiv
mit einer Bildlaufleiste fokussiert ist, scrollen die Pfeiltasten seinen Inhalt (anstelle des Inhalts anderer Elemente wie z. B.body
).Antworten:
Dadurch wird zu dem betreffenden Element gescrollt und es im Wesentlichen "fokussiert".
quelle
Ja - das ist möglich. Dazu müssen Sie einen Tabindex zuweisen ...
Ein Tabindex von 0 setzt das Tag "in der natürlichen Tabulatorreihenfolge der Seite". Eine höhere Zahl gibt ihm eine bestimmte Prioritätsreihenfolge, wobei 1 die erste, 2 die zweite usw. ist.
Sie können auch einen Tabindex von -1 angeben, wodurch das Div nur per Skript fokussierbar ist, nicht vom Benutzer.
Offensichtlich ist es eine Schande, ein Element zu haben, das Sie per Skript fokussieren können und das Sie nicht mit anderen Eingabemethoden fokussieren können (insbesondere, wenn ein Benutzer nur über eine Tastatur verfügt oder ähnlich eingeschränkt ist). Es gibt auch eine ganze Reihe von Standardelementen, die standardmäßig fokussierbar sind und semantische Informationen enthalten, um Benutzer zu unterstützen. Nutze dieses Wissen mit Bedacht.
quelle
focus()
.tabindex
wird zu einem Element machen es Fokussierbare, die die ermöglichtfocus()
undblur()
Methoden, und dann können Sie einen Fokus auslösen wie folgt aus :document.getElementById('tries').focus();
window.location.hash = ...
ist der Weg, dies zu tun. Fokus bedeutet nicht "in Sicht bringen", sondern nur, den Fokus buchstäblich auf dieses Element zu legen.document.getElementById('tries').scrollIntoView()
funktioniert. Dies funktioniert besser alswindow.location.hash
bei fester Positionierung.quelle
tabindex
Attribut) im Overlay-Div zu haben und esfocus()
stattdessen für dieses Element zu verwenden.Sie können Tabindex verwenden
Der Tabindex-Wert kann ein interessantes Verhalten zulassen.
quelle
quelle
$('#inner').focus();
Ich wollte etwas wie das von Michael Shimmin vorschlagen, aber ohne Dinge wie das Element oder das darauf angewendete CSS fest zu codieren.
Ich verwende jQuery nur zum Hinzufügen / Entfernen von Klassen. Wenn Sie jquery nicht verwenden möchten, benötigen Sie nur einen Ersatz für add / removeClass
- Javascript
- CSS
quelle
quelle
Um den Rand blinken zu lassen, können Sie Folgendes tun:
Dadurch wird der Rand 1 Sekunde lang durchgehend rot und dann wieder entfernt.
quelle