Addaw, ir a inicio Donar

Técnica Técnicas generales WCAG 2.2

G212Activar los controles al soltar el puntero, como hacen los controles nativos

Nombre oficial en el W3C: Usar los controles nativos para garantizar que la funcionalidad se active con el evento de levantar el puntero

En pocas palabras

Un botón debe ejecutar su acción cuando se suelta el ratón o se levanta el dedo, no al apretar. Así, quien pulsa por error puede apartar el dedo o el ratón antes de soltar y nada ocurre. La forma más sencilla es usar botones y enlaces normales con el evento click.

Por qué es importante

Muchas personas pulsan sin querer: por temblores, por poca precisión o simplemente por un despiste en el móvil. Si la acción salta al apretar, no hay vuelta atrás.

Cuando la acción ocurre al soltar, basta con desplazar el dedo o el puntero fuera del botón para cancelarla. Esto evita borrar un archivo, enviar un formulario o comprar algo por accidente.

Cómo se hace

  1. Use elementos nativos: <button>, <a href> o los controles estándar de iOS y Android. Ya se activan al soltar.
  2. Programe las acciones con el evento click, que se dispara al soltar y también funciona con teclado.
  3. Evite mousedown, pointerdown o touchstart para ejecutar acciones.
  4. Si alguna acción tiene que ocurrir al apretar, que se pueda deshacer fácilmente, como colocar el cursor dentro de un campo de texto.

Cómo comprobarlo

  1. Pulse cada botón o enlace sin soltar el ratón y compruebe que todavía no pasa nada.
  2. Sin soltar, aparte el puntero del control y suelte: la acción no debe ejecutarse.
  3. Haga lo mismo en el móvil con el dedo.
  4. Si tiene acceso al código, busque eventos mousedown, pointerdown o touchstart que lancen acciones.

Ejemplo

La acción de borrar se programa con el evento click de un botón nativo.

<button type="button" id="borrar">Borrar borrador</button>
<script>
  // click se dispara al soltar, no al apretar
  document.getElementById('borrar')
    .addEventListener('click', borrarBorrador);
</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 G212 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

Esta técnica se aplica a casi todas las tecnologías.

Descripción

El objetivo de esta técnica es garantizar que los usuarios que intentan interactuar con un control no desencadenen accidentalmente la acción del evento. La forma más directa de conseguirlo es basarse en el evento de levantar el puntero (por ejemplo, el evento onclick o mouseup).

La manera más fácil de cumplir este criterio de conformidad es, sencillamente, usar el comportamiento por defecto de los controles y no sobrescribirlo con un desencadenador explícito en el evento de pulsación. El evento de levantar es el comportamiento por defecto de casi todos los controles en cualquier lenguaje de programación o de marcado.

En los lenguajes nativos en los que un control se activa con el evento de pulsación, suele ser por una buena razón y la acción es fácilmente recuperable. Por ejemplo, un elemento input de HTML puede hacer que el cursor entre en el área editable con el evento de «puntero pulsado», porque la acción es trivialmente reversible y, como tal, cumple los requisitos del criterio de conformidad Cancelación del puntero. Esto se debe a que, si el usuario se da cuenta de que ha cometido un error después de pulsar el control, basta con que aparte el puntero de la zona activa mientras lo mantiene pulsado y después lo suelte, y el evento no se desencadena.

Ejemplos

Usar un evento onclick nativo en JavaScript

En JavaScript, los eventos onclick nativos se desencadenan por defecto con el evento de levantar.

Usar un botón o un enlace nativo en HTML

En HTML, los eventos onclick de los elementos nativos <button> o <a href ....> se desencadenan por defecto con el evento de levantar.

El elemento <button> no hace nada por sí mismo (salvo que forme parte de un <form> y NO tenga <type="button">, en cuyo caso envía el formulario). Quien desarrolla debería basarse en manejadores de clic independientes del método de entrada.

Usar un botón nativo en iOS o Android

En los botones nativos de iOS y Android, los eventos onclick se desencadenan por defecto con el evento de levantar.

El estándar WCAG en sí se aplica a páginas web, por lo que este ejemplo se ofrece como consejo complementario útil para quienes busquen aplicar WCAG2ICT a aplicaciones nativas.

Pruebas

Procedimiento

Para todos los controles sobre los que se puede hacer clic:

  1. Activar el evento de pulsación, mover el puntero fuera del objetivo antes de desencadenar el evento de levantar y, a continuación, soltar el puntero para desencadenar el evento de levantar.
  2. Comprobar que la acción no se ha desencadenado al soltar el puntero fuera de la zona activa del objetivo.
  3. Si la acción se desencadena, comprobar que la acción es reversible.

Resultados esperados

  • La comprobación n.º 2 o la n.º 3 es verdadera.

Recursos

Cómo lo comprobamos en ADDAW

En cada auditoría de ADDAW revisamos esta técnica página a página y le entregamos los errores con capturas y la forma de corregirlos.

Solicitar una auditoría

Basado en la técnica G212 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.