Verhinderung tab um über Adressleiste
Ich weiß, dies ist wahrscheinlich ein Eingabehilfen-Problem, das vielleicht am besten Links allein, sondern ich würde gerne herausfinden, wenn es möglich zu verhindern, dass der Reiter vom Besuch der Adressleiste in der tabbing-Zyklus.
Meine Anwendung ist eine andere Methode des Radverkehrs durch ein-Gebieten, aber viele neue Benutzer instinktiv versuchen, verwenden Sie die Registerkarte, und es funktioniert nicht wie erwartet.
- Ich würde es allein verlassen. Eine einfache Lösung ist, um Ihre app starten in einem popup-Fenster. Dann blenden Sie das Feld Adresse über
location=no
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine generische jquery-Umsetzung, wo Sie nicht zu finden, die max Registerkarte index. Beachten Sie, dass dieser code funktioniert auch, wenn Sie hinzufügen oder entfernen von Elementen in Ihrem DOM.
Allerdings sollten Sie beachten, dass der obige code funktioniert nur mit sichtbaren Eingänge. Einige Elemente werden im Dokument activeElement auch wenn Sie keine Eingabe, so wenn es Ihr Fall ist, sollten Sie prüfen, indem Sie die
$(':input:visible')
selector.Ich wusste nicht fügen Sie code, um zu Blättern, um den Fokus element, da dies möglicherweise nicht das gewünschte Verhalten für alle..., wenn Sie es brauchen, fügen Sie es einfach nach dem Aufruf
focus()
Könntest du Javascript verwenden, und erfassen Sie das "keydown" - event auf dem element mit der höchsten "tabindex". Wenn der Benutzer drückt die "TAB" - Taste (event.keyCode==9) ohne "Shift" - Taste (event.shiftKey == false), dann einfach den Fokus auf das element mit dem niedrigsten tabindex.
Würdest du dann auch benötigen, um das gleiche zu tun in umgekehrter element mit dem niedrigsten tabindex-Eigenschaft. Erfassen Sie die "keydown" - event für dieses element. Wenn der Benutzer drückt die "TAB" - Taste (event.keyCode==9) MIT der "Shift" - Taste (event.shiftKey == true) setzen Sie den Fokus auf das element mit der höchsten tabindex.
Dies würde effektiv verhindern, dass die Adressleiste immer konzentriert mit der TAB-Taste. Ich bin mit dieser Technik in meinem aktuellen Projekt.
Vergessen Sie nicht zu kündigen, das keydown-Ereignis, wenn der richtige Schlüssel-Kombination gedrückt wird! Mit JQuery ist es "event."preventDefault()". In standard-Javascript, ich glaube, dass du einfach "return false".
Hier ist ein JQuery-snippet laden ich bin mit...
Beachten Sie auch, dass die Einstellung der tabindex=0 hat unerwünschte Ergebnisse, die auf der Reihenfolge, in der die Dinge fokussiert sind. Ich erinnere mich an die (für meine Zwecke), tabindex ist ein 1-basierter index.
Können Sie die Tab-Reihenfolge (und welche Elemente sollten in der Lage, Fokus) mit dem globalen
tabindex
- Attribut.Allerdings können Sie nicht verhindern, dass Benutzer auf die Registerkarte in einem anderen Kontext nicht unter der Kontrolle von der Seite (z.B. in der Adressleiste des Browsers) mit diesem Attribut. (Könnte es möglich sein, in Kombination mit JavaScript, aber.)
Für so einen (bösen!) use-case -, müssten Sie den Blick in Tastatur fallen.
WCAG 2.0 hat die Leitlinie: 2.1.2 Keine Tastatur Falle. In Verständnis 2.1.2 SC finden Sie "Techniken und Fehler" für diesen Leitfaden:
Also vielleicht erhalten Sie einige Ideen, wie eine solche Falle möglich wäre.
tabindex
auf alle Kosten. Wenn Sie hinzufügen ein neues element zu der Seite und vergessen, hinzuzufügentabindex
es, jemanden Navigation w/ AT oder die Tastatur wird nie in der Lage sein, darauf zuzugreifen.Ich hinzufügen, zwei winzige, unsichtbare Elemente auf tabindex 1 und auf der letzten tabindex. Hinzufügen eines onFocus für diese zwei: Das element mit tabindex 1 sollte der Schwerpunkt der letzten echten element, das mit den max tabindex konzentrieren sollte, die erste echte element. Stellen Sie sicher, dass Sie konzentrieren sich die erste wirkliche element auf Dom:loaded.
Ich verwendet m-albert Lösung und es funktioniert. Aber in meinem Fall, dass ich nicht kontrollieren tabindex Eigenschaften. Meine Absicht ist es, den Fokus auf eine Symbolleiste am oberen Rand der Seite (erste Kontrolle), wenn der Benutzer verlässt das Letzte Steuerelement auf die Seite.
Wo Kontext kann jedes Jquery-Objekt, Wahlschalter, oder sogar Dokument, oder kann man es weglassen.
Den Bildlauf-animation, natürlich, ist optional.
Nicht sicher, ob dies immer noch ein Problem, aber das ich umgesetzt habe meine eigene Lösung, die nicht jQuery verwenden, kann in dem Fall verwendet werden, wenn alle Elemente haben tabindex="0", und wenn das DOM änderungen vorbehalten. Ich fügte hinzu, ein zusätzliches argument für einen Zusammenhang, wenn Sie einschränken möchten, die tabcycling an ein bestimmtes element mit dem tabindex-Elemente.
Einige kurze Anmerkungen zu den Argumenten:
min muss kleiner als oder gleich max, und contextSelector ist eine optionale Zeichenkette, die, wenn verwendet, sollte ein Gültiger Selektor. Wenn contextSelector ist eine ungültige Auswahl oder einer Auswahl, die nicht übereinstimmen, mit allen Elementen, dann ist die Dokument Objekt dient als Kontext.
Weitere Hinweise:
Wenn min gleich max, dann tab, Radfahren wird natürlich vorkommen, bis das Letzte element im Kontext erreicht ist. Wenn min ist weniger streng als max, dann Tab-Zyklus von natürlich bis entweder die min oder die max erreicht ist. Wenn Tab-rückwärts und die min erreicht wird, oder durch drücken der Tabulatortaste vorwärts und die max erreicht ist, dann die Tab-Taste wird der Zyklus für die min element oder max element jeweils.
Beispiel: