Fallo común WCAG 2.2
F50Parpadeos hechos con JavaScript que no se paran a los 5 segundos
Nombre oficial en el W3C: Fallo del criterio de conformidad 2.2.2 debido a un script que provoca un efecto de parpadeo sin un mecanismo para detenerlo en 5 segundos o menos
En pocas palabras
Algunos scripts hacen parpadear un aviso o un precio mostrándolo y ocultándolo una y otra vez. Si el script no detiene el parpadeo a los 5 segundos como mucho, es un fallo. Lo más sencillo es que el efecto se pare solo antes de ese tiempo.
Por qué es importante
Un elemento que parpadea atrae la mirada una y otra vez. A las personas con problemas de atención les impide concentrarse en el resto de la página.
También dificulta la lectura a personas con baja visión o con dislexia. En una ficha de producto con el precio parpadeando, cuesta leer la descripción, que es lo que la persona quería consultar.
Cómo evitarlo
- Piense si de verdad hace falta el parpadeo. Suele bastar con destacar el texto con color, tamaño o un icono.
- Si lo usa, programe que se detenga solo antes de 5 segundos. Guarde el temporizador y anúlelo con
clearIntervaloclearTimeout. - Al terminar, deje el contenido visible. No lo deje oculto en la fase «apagada».
- Si el efecto tiene que durar más, añada un botón visible para pararlo.
- Respete la preferencia de reducir movimiento con
prefers-reduced-motion.
Cómo comprobarlo
- Cargue la página y mida con un cronómetro cuánto tiempo parpadea cada elemento.
- Si pasa de 5 segundos, busque un botón o control para detenerlo.
- Si no se para solo ni hay control, el contenido tiene este fallo.
- En el código, busque
setIntervalosetTimeoutque cambienvisibility,displayuopacitysin un final.
Ejemplo
Un aviso que parpadea y se detiene solo a los 4 segundos, y queda visible.
<p id="aviso">Plazo abierto hasta el 30 de octubre</p>
<script>
const aviso = document.getElementById('aviso');
const parpadeo = setInterval(() => {
aviso.style.visibility =
aviso.style.visibility === 'hidden' ? 'visible' : 'hidden';
}, 500);
setTimeout(() => {
clearInterval(parpadeo);
aviso.style.visibility = 'visible';
}, 4000);
</script>
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 F50 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
Tecnologías que permiten controlar mediante scripts el parpadeo del contenido.
Descripción
Los scripts pueden usarse para hacer parpadear un contenido alternando su visibilidad a intervalos regulares. Constituye un fallo que el script no incluya un mecanismo para detener el parpadeo a los 5 segundos o antes. Consulte Usar scripts para controlar el parpadeo y detenerlo en cinco segundos o menos para obtener información sobre cómo modificar la técnica de modo que el parpadeo se detenga.
Ejemplos
El siguiente ejemplo usa un script para hacer parpadear un contenido, pero el parpadeo continúa indefinidamente en lugar de detenerse al cabo de cinco segundos.
<script>
// blink "on" state
function show(){
document.getElementById("blink1").style.visibility = "visible";
window.setTimeout(hide, 450);
}
// blink "off" state
function hide(){
document.getElementById("blink1").style.visibility = "hidden";
window.setTimeout(show, 450);
}
// kick it off
show();
</script>
<span id="blink1">This content will blink</span>
Pruebas
Procedimiento
Para cada caso de contenido que parpadea:
- Determinar si el parpadeo se detiene en 5 segundos o menos.
Resultados esperados
Si la comprobación n.º 1 es falsa, el contenido falla el criterio de conformidad.
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 F50 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.