Fallo común WCAG 2.2 obsoleta
F77Valores de id repetidos en la misma página
Nombre oficial en el W3C: Fallo del criterio de conformidad 4.1.1 debido a valores duplicados de tipo ID
Técnica obsoleta: el W3C ya no la recomienda. |
En pocas palabras
Fallo obsoleto. En WCAG 2.2 se eliminó el criterio 4.1.1, que pedía un código sin errores de sintaxis. Este fallo trataba de varios elementos con el mismo id. Hoy no se evalúa por sí solo. Pero un id repetido puede romper la unión entre una etiqueta y su campo, y eso sí incumple otros criterios.
Por qué es importante
El atributo id es como el DNI de un elemento: debe ser único en la página. Muchas relaciones dependen de él. Por ejemplo, el atributo for une una etiqueta con su campo usando el id del campo.
Si dos elementos comparten id, el navegador suele quedarse con el primero. El lector de pantalla (programa que lee en voz alta lo que hay en la pantalla) puede leer la etiqueta de otro campo, o ninguna. En una tabla, una celda puede quedar unida al encabezado equivocado.
El W3C retiró este fallo porque los navegadores ya corrigen solos casi todos los errores de código. Los id repetidos que rompen relaciones se evalúan hoy con los criterios 1.3.1 (Información y relaciones) y 4.1.2 (Nombre, función y valor).
Cómo evitarlo
- Dé a cada
idun valor único en toda la página. - Cuide sobre todo los id que se usan en
for,headers,aria-labelledby,aria-describedbyyaria-controls. - Si repite un bloque en la página, genere id distintos en cada copia. Por ejemplo, con un sufijo:
email-1,email-2. - Revise los formularios y módulos de WordPress y de los maquetadores visuales. Algunos repiten el mismo id si se colocan dos veces en una página.
Cómo comprobarlo
- Pase la página por el validador del W3C (validator.w3.org) y busque los avisos de id duplicado.
- Use axe DevTools. Avisa de los id repetidos que usan las etiquetas y los atributos ARIA.
- Para cada id repetido, compruebe si alguna etiqueta, tabla o atributo ARIA lo usa.
- Si lo usa, recorra ese campo o esa tabla con un lector de pantalla. Compruebe que se anuncia la etiqueta o el encabezado correcto.
Ejemplo
Dos formularios en la misma página con el mismo id: la segunda etiqueta se une al primer campo. La solución es dar un id distinto a cada campo.
<!-- Error: dos campos con id="email" -->
<label for="email">Correo para el boletín</label>
<input type="email" id="email">
<label for="email">Correo de contacto</label>
<input type="email" id="email">
<!-- Correcto: cada campo tiene su propio id -->
<label for="email-boletin">Correo para el boletín</label>
<input type="email" id="email-boletin">
<label for="email-contacto">Correo de contacto</label>
<input type="email" id="email-contacto">
Ver el texto completo del W3C (traducción al español)
Esta es una traducción no oficial al español de la técnica F77 de Techniques for WCAG 2.2, del W3C. Puede contener errores. El único documento oficial y normativo es la versión original en inglés, publicada en el sitio web del W3C.
Aplicabilidad
HTML y cualquier lenguaje de marcado basado en XML, incluido SVG
Descripción
Describe una condición de fallo en la que se sabe que los errores de id duplicados causan problemas a las tecnologías de asistencia cuando intentan interactuar con el contenido. Los valores duplicados de tipo id pueden ser problemáticos para los agentes de usuario que dependen de este atributo para transmitir con precisión a los usuarios las relaciones entre distintas partes del contenido. Por ejemplo, un lector de pantalla puede usar los valores de id para identificar el contenido de encabezado aplicable a una celda de datos dentro de una tabla de datos, o el control de entrada al que se aplica una etiqueta determinada. Si estos valores no son únicos, el lector de pantalla no podrá determinar por software qué encabezados están asociados a la celda de datos o qué control está asociado a qué etiqueta o nombre.
Comprobar que los valores del atributo id son únicos dentro de un documento puede hacerse validando el documento contra su especificación, porque la especificación define qué atributos contienen identificadores únicos en todo el documento.
En la mayoría de los lenguajes de marcado, los valores de id son valores de atributo, por ejemplo en HTML y SVG.
En los documentos XML que usan únicamente el atributo xml:id como atributo id, basta con procesar el documento XML con un analizador validador compatible con la especificación xml:id.
Ejemplos
Un autor usa un servicio de validación en línea para comprobar que todos los valores del atributo id son únicos.
Un desarrollador utiliza las funciones de su herramienta de autor para asegurarse de que los valores del atributo id son únicos.
Pruebas
Procedimiento
- Comprobar que todos los valores de tipo
idson únicos en la página web
Resultados esperados
- Si la comprobación n.º 1 es falsa, se da esta condición de fallo y el contenido falla el criterio de conformidad.
Recursos
- HTML: atributo id
- xml:id Version 1.0 - Recomendación del W3C de 9 de septiembre de 2005.
- Extensible Markup Language (XML) 1.0 (Fourth Edition): Validity constraint: ID (restricción de validez: ID)
Cómo lo comprobamos en ADDAW
Este error es uno de los que buscamos en cada auditoría de ADDAW. Se lo entregamos con capturas y la forma de corregirlo.
Basado en la técnica F77 del W3C (WCAG 2.2). Explicación y ejemplos: ADDAW. Traducción no oficial del texto del W3C © W3C, licencia de documentos del W3C. ¿Ha visto un error? Escríbanos.