Diferencia entre revisiones de «Principio 2/2.4 Navegable/2.4.3-B»
De WCAG Wiki
< Principio 2 | 2.4 Navegable
Página creada con «== '''2.4.3- B. Si el contenido de una página se modifica dinámicamente se debe hacer de forma que el orden del foco sigue teniendo sentido y sin tabular por elementos ocultos''' == '''A) EJEMPLO ACCESIBLE:''' '''B) EJEMPLO NO ACCESIBLE:'''» |
Sin resumen de edición |
||
| (No se muestran 5 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
== | {{CriterioWCAG | ||
|id_wcag_criterio=2.4.3 | |||
|id_wcag_subcriterio=2.4.3-B | |||
|wcag_titulo_criterio=2.4.3-B. Contenido dinámico y orden del foco | |||
|wcag_nivel=A | |||
|wcag_version=2.0 | |||
|wcag_principio=2_Operable | |||
|wcag_principio_url=Principio_2 | |||
|wcag_pauta=2.4_Navegable | |||
|wcag_pauta_url=Principio_2/2.4_Navegable | |||
|wcag_grupo=Navegación | |||
|wcag_subgrupo=Teclado_y_contenido | |||
|wcag_subcriterio_url=Principio_2/2.4_Navegacion_clara/2.4.3-B | |||
''' | |wcag_discapacidades= | ||
<li class="discapacidad-item"> | |||
[[Archivo:Motriz.png|20px|class=icon-discapacidad|alt=Discapacidad motriz]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad motriz|Motriz]]</span> – | |||
<span class="gravedad gravedad-grave">Barrera grave</span> | |||
</li> | |||
<li class="discapacidad-item"> | |||
[[Archivo:Sinvision.png|20px|class=icon-discapacidad|alt=Discapacidad visual total]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad visual total|Visual total]]</span> – | |||
<span class="gravedad gravedad-grave">Barrera grave</span> | |||
</li> | |||
<li class="discapacidad-item"> | |||
[[Archivo:sordoceguera.png|20px|class=icon-discapacidad|alt=Discapacidad sordoceguera]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad sordoceguera|Sordoceguera]]</span> | |||
– | |||
<span class="gravedad gravedad-grave">Barrera grave</span> | |||
</li> | |||
|wcag_lista_discapacidades= | |||
[[Categoría:Discapacidad motriz]] | |||
[[Categoría:Discapacidad visual total]] | |||
[[Categoría:Discapacidad sordoceguera]] | |||
|wcag_texto_criterioOAW= | |||
Si el contenido de una página se modifica dinámicamente se debe hacer de forma que el orden del foco sigue teniendo sentido y sin tabular por elementos ocultos. | |||
|wcag_descripcion_resumida= | |||
Cuando el contenido aparece, desaparece o cambia mediante scripts, el orden de tabulación se debe mantener lógico y el foco debe moverse al contenido visible y relevante. | |||
|wcag_objetivo= | |||
Asegurar que los usuarios que navegan con teclado y tecnologías de apoyo puedan mantener el contexto cuando el contenido cambia dinámicamente. | |||
|wcag_importancia= | |||
Si el foco se mueve a elementos ocultos o deja zonas accesibles, los usuarios pueden perder orientación, no completar tareas o quedar atrapados fuera del flujo correcto de interacción. | |||
|wcag_referencias= | |||
<ul> | |||
<li><span lang="en">[https://www.w3.org/WAI/WCAG21/Techniques/client-side-script/SCR26 SCR26: Inserting dynamic content into the Document Object Model immediately following its trigger element]</span></li> | |||
<li><span lang="en">[https://www.w3.org/WAI/WCAG21/Techniques/client-side-script/SCR37 SCR37: Creating custom dialogs in a device independent way]</span></li> | |||
<li><span lang="en">[https://www.w3.org/WAI/WCAG21/Techniques/failures/F85 F85: Failure due to using dialogs or menus that are not adjacent to their trigger control in the sequential navigation order]</span></li> | |||
</ul> | |||
|wcag_recursos= No hay | |||
|wcag_tipo_evaluacion=Manual | |||
|wcag_pasos_evaluacion= | |||
<ol class="paso-list"> | |||
<li><span class="paso-badge">Paso 1.</span> | |||
Localizar todos los elementos de contenido dinámico de la página (p. ej., cuadros de diálogo, menús desplegables…). | |||
</li> | |||
<li><span class="paso-badge">Paso 2.</span> | |||
Utilizar el teclado para acceder a dicho contenido. Debe comprobarse que: | |||
<ul> | |||
<li>a. El foco se encuentra dentro de dicho contenido.</li> | |||
<li>b. Cuando se sigue tabulando, el foco avanza en una navegación secuencial dentro de dicho contenido.</li> | |||
</ul> | |||
</li> | |||
<li><span class="paso-badge">Paso 3.</span> | |||
Utilizar el teclado para salir de dicho contenido. Debe comprobarse que: | |||
<ul> | |||
<li>a. El foco se sitúa en el elemento usado para abrir el diálogo o bien en el siguiente elemento de la página.</li> | |||
</ul> | |||
<span class="paso-badge"> Nota: </span> | |||
Si el comportamiento no es el adecuado, puede ser útil la herramienta <strong> [https://chromewebstore.google.com/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm?hl=es Web Developer Toolbar] </strong> activando <strong>Information → Display Tab Index</strong> para visualizar el atributo <code>tabindex</code> y ayudar a identificar el origen del problema. | |||
</li> | |||
</ol> | |||
|wcag_resultado_evaluacion= | |||
El foco permanece en contenido visible, sigue orden lógico y respeta la interacción dinámica sin exponer elementos ocultos. | |||
|wcag_ejemplo_evaluacion= | |||
<div class="accessibility-card"> | |||
Menú con foco gestionado | |||
<pre class="wcag-codigo-html"> | |||
<button id="openMenu">Menú</button> | |||
<nav id="menu" hidden aria-hidden="true"> | |||
<a href="#a">Opción A</a> | |||
<a href="#b">Opción B</a> | |||
</nav> | |||
<script> | |||
const btn = document.getElementById('openMenu'); | |||
const menu = document.getElementById('menu'); | |||
btn.addEventListener('click', () => { | |||
menu.hidden = false; | |||
menu.setAttribute('aria-hidden','false'); | |||
menu.querySelector('a').focus(); | |||
}); | |||
</script> | |||
</pre> | |||
</div> | |||
|wcag_otras_herramientas_evaluacion= | |||
<ul> | |||
<li>'''Navegación con teclado''': interactuar con componentes dinámicos (p. ej. menús desplegables, modales, pestañas, acordeones) usando <kbd>Tab</kbd> y <kbd>Shift + Tab</kbd>, asegurando que el foco sigue un orden lógico y no pasa por elementos ocultos.</li> | |||
<li>'''Inspección del DOM''': comprobar que los elementos dinámicamente ocultos se gestionan correctamente (p. ej., usando <code>display:none</code>, <code>hidden</code>, <code>aria-hidden="true"</code>) para que no sean alcanzables con el foco.</li> | |||
<li>'''Pruebas de cambios de estado''': abrir/cerrar componentes y verificar que el foco se mueve al contenido visible relevante y vuelve al punto lógico al cerrar.</li> | |||
<li>'''Lectores de pantalla''': (NVDA, JAWS, VoiceOver) confirmar que el contenido dinámico se anuncia adecuadamente y que el orden del foco no se rompe al interactuar.</li> | |||
</ul> | |||
}} | |||
Revisión actual - 12:44 6 nov 2025
2.4.3-B. Contenido dinámico y orden del foco
- Nivel: A
- Versión: 2.0
- Principio: 2_Operable
- Pauta: 2.4_Navegable
- Grupo: Navegación
- Subgrupo: Teclado_y_contenido
Discapacidades afectadas
Este criterio puede afectar a distintas personas con discapacidad. A continuación se indican las más relevantes.
-
Motriz –
Barrera grave
-
Visual total –
Barrera grave
-
Sordoceguera
–
Barrera grave
Enunciado del criterio (Observatorio de Accesibilidad Web)
- Si el contenido de una página se modifica dinámicamente se debe hacer de forma que el orden del foco sigue teniendo sentido y sin tabular por elementos ocultos.
Comprensión del criterio
Descripción resumida
Cuando el contenido aparece, desaparece o cambia mediante scripts, el orden de tabulación se debe mantener lógico y el foco debe moverse al contenido visible y relevante.
Objetivo
Asegurar que los usuarios que navegan con teclado y tecnologías de apoyo puedan mantener el contexto cuando el contenido cambia dinámicamente.
Importancia de cumplir el criterio
Si el foco se mueve a elementos ocultos o deja zonas accesibles, los usuarios pueden perder orientación, no completar tareas o quedar atrapados fuera del flujo correcto de interacción.
Referencias WCAG
Recursos de apoyo
No hay
Evaluación del criterio
Tipo de evaluación
Evaluación Manual
Procedimiento de evaluación
- Paso 1. Localizar todos los elementos de contenido dinámico de la página (p. ej., cuadros de diálogo, menús desplegables…).
- Paso 2.
Utilizar el teclado para acceder a dicho contenido. Debe comprobarse que:
- a. El foco se encuentra dentro de dicho contenido.
- b. Cuando se sigue tabulando, el foco avanza en una navegación secuencial dentro de dicho contenido.
- Paso 3.
Utilizar el teclado para salir de dicho contenido. Debe comprobarse que:
- a. El foco se sitúa en el elemento usado para abrir el diálogo o bien en el siguiente elemento de la página.
Nota: Si el comportamiento no es el adecuado, puede ser útil la herramienta Web Developer Toolbar activando Information → Display Tab Index para visualizar el atributo
tabindexy ayudar a identificar el origen del problema.
Resultado esperado
El foco permanece en contenido visible, sigue orden lógico y respeta la interacción dinámica sin exponer elementos ocultos.
Ejemplo
Menú con foco gestionado
<button id="openMenu">Menú</button>
<nav id="menu" hidden aria-hidden="true">
<a href="#a">Opción A</a>
<a href="#b">Opción B</a>
</nav>
<script>
const btn = document.getElementById('openMenu');
const menu = document.getElementById('menu');
btn.addEventListener('click', () => {
menu.hidden = false;
menu.setAttribute('aria-hidden','false');
menu.querySelector('a').focus();
});
</script>
Otras herramientas de evaluación
- Navegación con teclado: interactuar con componentes dinámicos (p. ej. menús desplegables, modales, pestañas, acordeones) usando Tab y Shift + Tab, asegurando que el foco sigue un orden lógico y no pasa por elementos ocultos.
- Inspección del DOM: comprobar que los elementos dinámicamente ocultos se gestionan correctamente (p. ej., usando
display:none,hidden,aria-hidden="true") para que no sean alcanzables con el foco. - Pruebas de cambios de estado: abrir/cerrar componentes y verificar que el foco se mueve al contenido visible relevante y vuelve al punto lógico al cerrar.
- Lectores de pantalla: (NVDA, JAWS, VoiceOver) confirmar que el contenido dinámico se anuncia adecuadamente y que el orden del foco no se rompe al interactuar.
Ejemplos accesibles y no accesibles creados por alumnos
Comentarios
A continuación se muestran comentarios sobre el criterio 2.4.3-B. Contenido dinámico y orden del foco
Loading comments...
