La prévention tab pour faire défiler la barre d'adresse
Je réalise que c'est probablement un problème d'accessibilité qui peuvent le mieux être laissé seul, mais j'aimerais savoir si il est possible d'éviter l'onglet de la visite de la barre d'adresse dans le cycle de tabulation.
Ma demande a une autre méthode de vélo à travers les zones d'entrée, mais beaucoup de nouveaux utilisateurs, instinctivement, essayez d'utiliser l'onglet, et il ne fonctionne pas comme prévu.
Je voudrais le laisser seul. Une solution simple est de faire démarrer votre application dans une fenêtre popup. Ensuite, vous pouvez masquer le champ d'adresse via
location=no
.OriginalL'auteur John Smith | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Voici un générique jquery de mise en œuvre de l'endroit où vous n'avez pas à trouver le max onglet index. Notez que ce code fonctionne également si vous ajoutez ou supprimez des éléments dans votre DOM.
Cependant, il faut noter que le code ci-dessus va travailler uniquement avec visible entrées. Certains éléments peuvent devenir le document de activeElement même si ils ne sont pas d'entrée donc, si c'est votre cas, vous devriez envisager de les ajouter à la
$(':input:visible')
sélecteur.Je n'ai pas ajouter de code pour faire défiler jusqu'à l'élément focus comme cela peut ne pas être le comportement voulu pour tout le monde... si vous en avez besoin, il suffit d'ajouter après l'appel à
focus()
OriginalL'auteur The_Black_Smurf
Vous pouvez utiliser Javascript et de capturer l'événement "keydown" sur l'élément avec le plus de "tabindex". Si l'utilisateur appuie sur la touche "TAB" (événement.keyCode==9) sans la touche "Shift" (événement.shiftKey == false) puis il suffit de placer le focus sur l'élément avec le plus bas de la propriété tabindex.
Vous serait alors aussi besoin de faire la même chose en sens inverse pour l'élément avec le plus bas de la propriété tabindex. La Capture de l'événement "keydown" pour cet élément. Si l'utilisateur appuie sur la touche "TAB" (événement.keyCode==9) AVEC la touche "Shift" (événement.shiftKey == true), alors placez le focus sur l'élément avec la plus haute tabindex.
Ce serait effectivement empêcher la barre d'adresse de jamais être porté à l'aide de la touche de TABULATION. Je suis à l'aide de cette technique dans mon projet en cours.
N'oubliez pas d'annuler l'événement keydown si la bonne combinaison de touche est pressée! Avec JQuery, c'est "l'événement.preventDefault()". En Javascript standard, je crois que vous avez tout simplement "return false".
Voici un JQuery-laden extrait de code que j'utilise...
Aussi garder à l'esprit que la définition de la propriété tabindex=0 a des résultats indésirables sur l'ordre dans lequel les choses sont concentrés. Je me souviens toujours (pour ma part) que la propriété tabindex est un index basé sur 1.
OriginalL'auteur m-albert
Vous pouvez contrôler l'ordre de tabulation (et les éléments qui devraient être en mesure d'obtenir priorité à tous) avec le global
tabindex
l'attribut.Cependant, vous ne pouvez pas empêcher les utilisateurs d'onglet dans un autre contexte, pas sous le contrôle de la page (par exemple la barre d'adresse du navigateur) avec cet attribut. (Il pourrait être possible en combinaison avec le JavaScript, si.)
Pour un tel (mal!) cas d'utilisation, vous devez examiner en clavier pièges.
WCAG 2.0 a de la ligne directrice: 2.1.2 Pas De Clavier Piège. Dans La compréhension SC 2.1.2 vous pouvez trouver "les Techniques et les Échecs" pour cette ligne directrice:
Alors peut-être vous obtenez quelques idées par que comment un tel piège serait possible.
tabindex
à tout prix. Si vous ajoutez un nouvel élément à la page et oublier d'ajoutertabindex
, quelqu'un de la navigation w/ AT ou le clavier ne sera jamais en mesure d'y accéder.OriginalL'auteur unor
J'ai utilisé pour ajouter deux minuscules, des éléments invisibles sur tabindex 1 et le dernier tabindex. Ajouter un onFocus pour ces deux: L'élément avec la propriété tabindex 1 devrait se concentrer le dernier élément réel, l'un avec le max tabindex devrait se concentrer le premier élément réel. Assurez-vous que vous vous concentrez le premier élément réel sur les Dom:loaded.
OriginalL'auteur Jelmer Jellema
J'ai utilisé m-albert solution et ça fonctionne. Mais dans mon cas, je ne contrôle pas le tabindex propriétés. Mon intention est de définir le focus sur une barre d'outils en haut de la page (première commande) lorsque l'utilisateur quitte le dernier contrôle sur la page.
Où contexte peut être n'importe quel objet Jquery, sélecteur, ou même document, ou vous pouvez l'omettre.
Le défilement de l'animation, bien sûr, est facultative.
OriginalL'auteur Alexandre
Ne sais pas si c'est encore un problème, mais j'ai mis en place mon propre solution qui n'utilise pas jQuery, peut être utilisé dans le cas où tous les éléments ont tabindex="0", et lorsque le DOM est sujette à changement. J'ai ajouté un argument supplémentaire pour un contexte si vous voulez limiter la tabcycling à un élément spécifique contenant le tabindex éléments.
Quelques notes sur les arguments:
min doit être inférieure ou égale à max, et contextSelector est une chaîne facultative qui, si utilisé doit être valide sélecteur. Si contextSelector est pas valide sélecteur ou un sélecteur qui ne correspond pas avec tous les éléments, puis les document objet est utilisé comme contexte.
Plus de notes:
Si min est égal à max, puis onglet vélo peut se produire naturellement jusqu'à ce que le dernier élément du contexte est atteint. Si min est strictement inférieur à max, puis tabulation passera naturellement jusqu'à ce que le min ou la max est atteint. Si la tabulation vers l'arrière et le min est atteint, ou une tabulation à l'avant et à l' max est atteint, alors la tabulation va le cycle de la min élément ou max élément respectivement.
Exemple d'utilisation:
OriginalL'auteur jumper