Atajos de tecla de un solo carácter
Silktide encuentra páginas que registran un escuchador de teclado en toda la página —el documento, la ventana o <body>/<html>— y le pide que compruebe si algún atajo de un solo carácter necesita una vía de escape.
Ejemplos habituales son pulsar j para desplazarse hacia abajo, \/ para enfocar la búsqueda, o g y luego h para ir a inicio.
Esto es una : un escuchador global de teclas es un motivo real para mirar, pero Silktide no puede saber solo a partir del registro si el controlador implementa un atajo de un solo carácter. Las páginas sin escuchador global de teclas no se señalan.
Por qué es importante
Dos grupos se ven muy afectados por los atajos de una sola tecla siempre activos:
- Usuarios de entrada por voz dictan texto y comandos en voz alta. El software convierte su voz en pulsaciones de teclas, de modo que una frase normal se convierte en una serie de activaciones accidentales de atajos: las páginas pueden saltar, pueden abrirse diálogos y las acciones pueden ejecutarse a mitad de frase.
- Personas con baja destreza o temblores a menudo pulsan teclas que no pretendían, y cualquier tecla individual puede ser un disparador activo.
El criterio de éxito 2.1.4 (nivel A) de las exige que los atajos de un solo carácter puedan desactivarse, reasignarse para incluir una tecla modificadora como Ctrl o Alt, o que solo se activen mientras el control pertinente tenga .
Cómo solucionarlo
Para cada controlador de teclado global que implemente un atajo de un solo carácter, haga una de las siguientes cosas:
- Proporcione un ajuste que desactive los atajos.
- Exija una tecla modificadora, de modo que el atajo pase a ser por ejemplo
Ctrl+Ken lugar dek. - Maneje la tecla solo mientras el control pertinente tenga el foco: los atajos limitados a un control con foco están explícitamente permitidos.
// Se dispara cuando se pulsa "k", en cualquier parte de la página
document.addEventListener('keydown', (e) => {
if (e.key === 'k') openSearch();
});
// Corregido: requiere mantener pulsado Ctrl (o Cmd)
document.addEventListener('keydown', (e) => {
if (e.key === 'k' && (e.ctrlKey || e.metaKey)) openSearch();
});
Si un escuchador señalado no tiene atajos de un solo carácter —o ya ofrece alguna de estas vías de escape— el hallazgo.
Cómo lo prueba Silktide
- Recopilar los de teclado que la página registra en el navegador.
- Conservar solo los escuchadores de ámbito de página: los adjuntos al documento, la ventana o el elemento
<body>/<html>. Los escuchadores en controles individuales están exentos, porque solo se activan mientras ese control tiene el foco. - Informar de cada escuchador restante para que usted lo confirme. Silktide no analiza el código del controlador para buscar patrones
e.key === '\u2026': eso es demasiado frágil frente a código minimizado y de frameworks. La presencia de un escuchador global de teclas es la señal; su revisión es el veredicto.
Solución de problemas
El escuchador no es un atajo de un solo carácter
Muchos controladores globales de teclas solo vigilan Escape, las flechas o combinaciones con modificadores. Si el suyo no tiene atajos de un solo carácter, apruebe el hallazgo.
El atajo ya se puede desactivar o reasignar
Silktide puede ver el registro del escuchador, pero no puede ver si su sitio ofrece un interruptor en la configuración. Si lo hace, la página cumple: apruebe el hallazgo.
Atajos de scripts de terceros
Los widgets de chat, los reproductores de vídeo y las herramientas de analítica a veces registran sus propios escuchadores globales de teclas. Cuentan para su página igualmente; revise las opciones de accesibilidad del proveedor o plantee el asunto con ellos.
Atajos creados con el atributo accesskey
Esos se cubren por separado en la comprobación Atributo accesskey; esta comprobación cubre los atajos implementados en script.