Addaw, ir a inicio Donar

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

  1. Piense si de verdad hace falta el parpadeo. Suele bastar con destacar el texto con color, tamaño o un icono.
  2. Si lo usa, programe que se detenga solo antes de 5 segundos. Guarde el temporizador y anúlelo con clearInterval o clearTimeout.
  3. Al terminar, deje el contenido visible. No lo deje oculto en la fase «apagada».
  4. Si el efecto tiene que durar más, añada un botón visible para pararlo.
  5. Respete la preferencia de reducir movimiento con prefers-reduced-motion.

Cómo comprobarlo

  1. Cargue la página y mida con un cronómetro cuánto tiempo parpadea cada elemento.
  2. Si pasa de 5 segundos, busque un botón o control para detenerlo.
  3. Si no se para solo ni hay control, el contenido tiene este fallo.
  4. En el código, busque setInterval o setTimeout que cambien visibility, display u opacity sin 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:

  1. 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.

Solicitar una auditoría

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.