Técnica Scripts de cliente WCAG 2.2
SCR39Hacer legible y cerrable el contenido que aparece al pasar el ratón o enfocar
Nombre oficial en el W3C: Hacer que el contenido que aparece al pasar el puntero o al recibir el foco pueda recibir el puntero, se pueda descartar y sea persistente
En pocas palabras
Las ventanas emergentes, globos de ayuda y vistas previas que aparecen al pasar el ratón o al llegar con el teclado deben cumplir tres cosas. Hay que poder mover el puntero sobre ellas sin que desaparezcan. No deben cerrarse solas. Y deben poder cerrarse con la tecla Esc sin mover el ratón ni el foco.
Por qué es importante
Una persona con baja visión que usa un ampliador de pantalla (programa que agranda una parte de la pantalla) solo ve un trozo cada vez. Para leer un globo de ayuda tiene que mover el ratón hasta él. Si el globo desaparece al salir del botón, no puede leerlo.
- Si el contenido se cierra solo tras unos segundos, quien lee despacio se queda a medias.
- Si tapa otra parte de la página, por ejemplo un campo de un formulario de cita previa, hace falta poder cerrarlo sin perder la posición.
Cómo se hace
- Coloque el elemento que lo activa y el contenido emergente dentro de un mismo contenedor. Muéstrelo mientras el puntero esté sobre cualquiera de los dos.
- Evite huecos entre el activador y el contenido emergente, para que el puntero no lo cierre al cruzar.
- No use temporizadores para ocultarlo. Debe seguir visible hasta que la persona se vaya o lo cierre.
- Permita cerrarlo con Esc sin mover el ratón ni el foco (el elemento que recibe lo que se teclea).
- Muéstrelo también cuando el activador reciba el foco con el teclado, no solo con el ratón.
Cómo comprobarlo
- Pase el ratón por el activador y llévelo despacio hasta el contenido emergente. No debe desaparecer.
- Deje el ratón quieto un buen rato. El contenido debe seguir visible.
- Con el ratón aún encima, pulse Esc. El contenido debe cerrarse.
- Llegue al activador con el tabulador. El contenido debe aparecer, quedarse visible y cerrarse con Esc sin perder el foco.
Ejemplo
Script para un globo de ayuda que sigue visible sobre sí mismo y se cierra con Esc.
// El contenedor incluye el botón y el globo de ayuda
const caja = document.querySelector('.ayuda');
const globo = caja.querySelector('[role="tooltip"]');
const mostrar = () => { globo.hidden = false; };
const ocultar = () => { globo.hidden = true; };
caja.addEventListener('mouseenter', mostrar);
caja.addEventListener('mouseleave', ocultar); // sigue visible sobre el globo
caja.addEventListener('focusin', mostrar);
caja.addEventListener('focusout', ocultar);
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') ocultar(); // se cierra sin mover el ratón ni el foco
});
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 SCR39 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
La técnica es aplicable a cualquier tecnología que permita mostrar contenido adicional al pasar el puntero por encima.
Descripción
El contenido adicional que se muestra cuando el usuario mueve el puntero sobre un elemento activador o lleva el foco del teclado a dicho activador (por ejemplo, una ventana emergente) debe permanecer visible para dar tiempo a los usuarios a leerlo e interactuar con él, y debe permitir que el usuario mueva el puntero sobre el contenido adicional.
Las personas con baja visión que magnifican la pantalla a menudo solo ven una pequeña parte de la pantalla a la vez (su ventana gráfica). Esto significa que el contenido adicional puede no ser completamente visible en la ventana gráfica actual y que los usuarios quizá necesiten mover el ratón sobre el contenido adicional para leerlo. Por tanto, quienes desarrollan la web deben asegurarse de que el contenido adicional permanezca visible cuando el puntero se desplaza desde el activador hasta el contenido adicional (normalmente adyacente). El contenido adicional también debe poder descartarse sin mover el foco, de modo que los usuarios puedan leer el contenido que queda tapado por el contenido adicional.
Ejemplos
Vista previa del contenido de los enlaces
Al pasar el puntero sobre un enlace o al enfocarlo, aparece una vista previa del contenido del enlace justo encima o debajo de él. Los usuarios pueden mover el puntero sobre el contenido adicional (la ventana emergente) para poder leerlo por completo. Al pulsar la tecla Esc se descarta (se cierra) el contenido adicional.
HTML del ejemplo 1
<p>This is the
<a class="a-and-tooltip" id="parent" href="index.html">trigger
<span id="popup" role="tooltip">And this additional text
gives additional context on the trigger term
</span>
</a>.
Text and popup are <strong>in one link (a)</strong> element.
</p>
CSS del ejemplo 1
[role="tooltip"] {
display: none;
padding: 0.5em;
background:white;
color: black;
border:solid black 2px;
width:10em;
}
.a-and-tooltip {
position: relative;
}
[role="tooltip"] {
position: absolute;
left:0;
top:1em;
}
JavaScript del ejemplo 1
// trigger and popup inside the same link
var parent = document.getElementById("parent");
parent.onmouseover = function() {
document.getElementById("popup").style.display = "block";
}
parent.onmouseout = function() {
document.getElementById("popup").style.display = "none";
}
parent.onfocus = function() {
document.getElementById("popup").style.display = "block";
}
parent.onblur = function() {
document.getElementById("popup").style.display = "none";
}
// hide when ESC is pressed
document.addEventListener("keydown", (e) => {
if ((e.keyCode || e.which) === 27)
document.getElementById("popup").style.display = "none";
});
Ejemplo funcional de contenido al pasar el puntero o al recibir el foco
Pruebas
Procedimiento
Para el contenido adicional que aparece al pasar el puntero, comprobar que:
- El puntero puede moverse sobre el contenido adicional sin que este desaparezca.
- El contenido adicional permanece visible y no se cierra automáticamente pasado un tiempo.
- El contenido puede cerrarse sin apartar el puntero del activador, ya sea pulsando Esc, pulsando otro atajo de teclado documentado o activando el propio activador.
Para el contenido adicional que aparece al recibir el foco, comprobar que:
- El contenido adicional permanece visible y no se cierra automáticamente pasado un tiempo.
- El contenido puede cerrarse sin apartar el foco del activador, ya sea pulsando Esc, pulsando otro atajo de teclado documentado o activando el propio activador.
Resultados esperados
Para el contenido que aparece al pasar el puntero:
- Las comprobaciones n.º 1, n.º 2 y n.º 3 son verdaderas.
Para el contenido que aparece al recibir el foco:
- Las comprobaciones n.º 1 y n.º 2 son verdaderas.
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.
Basado en la técnica SCR39 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.