El componente de la barra de navegación de la BBC que se rompía según el monitor externo
(joshtumath.uk)-
Un bug en el componente de la barra de navegación de la BBC
- Hace poco el equipo resolvió un bug extraño. Solo una persona del equipo podía reproducirlo, y solo ocurría en su casa.
-
La causa del bug
- Al hacer clic en el botón "Más" del sitio web de la BBC, el menú debía abrirse, pero en un monitor externo no funcionaba.
- Solo ocurría en el monitor externo, y en Safari no había problema.
-
Reproducción del problema
- Descubrieron que el bug solo ocurría cuando el monitor externo estaba colocado encima de la laptop.
- Ajustando la posición del monitor en la configuración del sistema se podía reproducir el problema.
-
Proceso de investigación
- Primera pista: En Safari el bug no ocurría.
- Segunda pista: Solo ocurría cuando el monitor externo estaba arriba y a la izquierda del monitor principal.
- Tercera pista: En Chrome y Firefox, los valores de
screenXyscreenYeran negativos. - Cuarta pista: El bug solo ocurría cuando
screenXyscreenYeran negativos. - Quinta pista: En Chrome y Firefox, la esquina superior izquierda del monitor principal es la coordenada (0,0).
-
Solución
- Se cambió la función
isInvokedByMousepara verificar quescreenXyscreenYno fueran 0. - Era un problema complejo, pero la solución fue simple.
- Hace falta refactorizar el código, pero por ahora esta solución es suficiente.
- Se cambió la función
-
Lecciones
- Hay que tener cuidado con las suposiciones sobre cómo funcionan las APIs.
- A pesar de varias pruebas, el bug no se había detectado.
- Aprendieron que la experiencia de usuario puede variar según la configuración de los monitores.
-
Corrección 2024-11-19: Hubo confusión sobre el uso de
screenX, y se refactorizó el componente de navegación. En la próxima entrada del blog se explicará el proceso de refactorización y se responderán las preguntas.
1 comentarios
Comentarios de Hacker News
Explica por qué el sitio web de la BBC muestra un comportamiento distinto al abrir el menú con teclado y con puntero
clickes útil porque es independiente del dispositivoSugiere modificar
isInvokedByMousepara comprobar siscreenXyscreenYno son 0Elogia la inversión de la BBC en accesibilidad y el hallazgo del bug
Intentó resolver el problema usando plantillas del lado del servidor, un framework CSS y JS mínimo
Señala que es un bug causado por una heurística incorrecta
screenXyscreenYtambién se verifiquen valores negativos, no solo positivosCuestiona por qué el sitio web obtiene la posición del mouse mediante coordenadas de pantalla
clickya proporciona información suficienteSe pregunta por qué el navegador reporta coordenadas distintas según el monitor
Pregunta cuál es la forma correcta de distinguir entre un clic del mouse y un clic con teclado
mousedownykeydownAfirma que se deberían usar coordenadas del viewport en lugar de coordenadas de pantalla
Le impresiona que hayan escrito el blog sin la aprobación del equipo de gestión y legal de la BBC