Le composant de barre de navigation de la BBC qui se cassait selon le moniteur externe utilisé
(joshtumath.uk)-
Bug du composant de barre de navigation de la BBC
- L’équipe a récemment résolu un bug étrange. Une seule personne de l’équipe pouvait le reproduire, et cela ne se produisait que chez elle.
-
Cause du bug
- En cliquant sur le bouton « Plus » du site de la BBC, le menu était censé s’ouvrir, mais cela ne fonctionnait pas sur un moniteur externe.
- Le problème ne se produisait que sur un moniteur externe, et Safari n’était pas affecté.
-
Reproduction du bug
- Ils ont découvert que le bug ne se produisait que lorsque le moniteur externe était placé au-dessus de l’ordinateur portable.
- Il était possible de reproduire le problème en ajustant la position du moniteur dans les réglages du système d’exploitation.
-
Enquête
- Premier indice : le bug ne se produisait pas dans Safari.
- Deuxième indice : il ne se produisait que lorsque le moniteur externe était situé au-dessus et à gauche du moniteur principal.
- Troisième indice : dans Chrome et Firefox, les valeurs de
screenXetscreenYétaient négatives. - Quatrième indice : le bug ne se produisait que lorsque
screenXetscreenYétaient négatifs. - Cinquième indice : dans Chrome et Firefox, le coin supérieur gauche du moniteur principal correspond aux coordonnées (0,0).
-
Solution
- La fonction
isInvokedByMousea été modifiée pour vérifier quescreenXetscreenYne sont pas égaux à 0. - Le problème était complexe, mais la solution était simple.
- Le code aurait besoin d’un refactoring, mais la solution actuelle est suffisante.
- La fonction
-
Leçon à retenir
- Il faut se méfier des hypothèses sur le fonctionnement des API.
- Malgré de nombreux tests, le bug n’avait pas été détecté.
- Cela a montré que l’expérience utilisateur peut varier selon la configuration des moniteurs.
-
Correction du 2024-11-19 : il y avait une confusion autour de l’utilisation de
screenX, et le composant de navigation a été refactoré. Un prochain billet de blog détaillera ce refactoring et répondra aux questions.
1 commentaires
Avis Hacker News
Explique pourquoi, sur le site de la BBC, l’ouverture du menu via le clavier et via le pointeur produit des comportements différents
clickest utile car il est indépendant du périphériquePropose de modifier
isInvokedByMousepour vérifier siscreenXetscreenYsont différents de 0Salue l’investissement de la BBC dans l’accessibilité ainsi que la découverte du bug
Tente de résoudre le problème avec des templates côté serveur, un framework CSS et un minimum de JS
Souligne qu’il s’agit d’un bug provoqué par une mauvaise heuristique
screenXetscreenY, il faut prendre en compte les valeurs négatives et pas seulement les positivesS’interroge sur la raison pour laquelle le site utilise les coordonnées d’écran pour obtenir la position de la souris
clickfournit à lui seul des informations suffisantesSe demande pourquoi les navigateurs rapportent des coordonnées différentes selon le moniteur
Demande quelle est la bonne méthode pour distinguer un clic de souris d’un clic au clavier
mousedownetkeydownEstime qu’il faudrait utiliser les coordonnées du viewport plutôt que les coordonnées d’écran
Est impressionné que le billet de blog ait été publié sans validation des équipes de direction et du service juridique de la BBC