-
Bug in der BBC-Navigationsleisten-Komponente
- Das Team hat kürzlich einen seltsamen Bug behoben. Nur ein Teammitglied konnte ihn reproduzieren, und er trat nur zu Hause auf.
-
Ursache des Bugs
- Beim Klick auf den Button „Mehr“ auf der BBC-Website sollte sich das Menü öffnen, auf einem externen Monitor funktionierte das jedoch nicht.
- Das Problem trat nur auf externen Monitoren auf, in Safari gab es es nicht.
-
Reproduktion des Problems
- Es wurde festgestellt, dass der Bug nur auftrat, wenn sich der externe Monitor oberhalb des Laptops befand.
- Durch Anpassen der Monitorposition in den OS-Einstellungen ließ sich das Problem reproduzieren.
-
Untersuchungsprozess
- Erster Hinweis: In Safari trat der Bug nicht auf.
- Zweiter Hinweis: Er trat nur auf, wenn sich der externe Monitor oberhalb und links vom Hauptmonitor befand.
- Dritter Hinweis: In Chrome und Firefox waren die Werte für
screenXundscreenYnegativ. - Vierter Hinweis: Der Bug trat nur auf, wenn
screenXundscreenYnegativ waren. - Fünfter Hinweis: In Chrome und Firefox ist die obere linke Ecke des Hauptmonitors die Koordinate (0,0).
-
Lösung
- Die Funktion
isInvokedByMousewurde so geändert, dass geprüft wird, obscreenXundscreenYnicht 0 sind. - Das Problem war komplex, aber die Lösung einfach.
- Ein Code-Refactoring ist nötig, aber die aktuelle Lösung reicht vorerst aus.
- Die Funktion
-
Erkenntnisse
- Man sollte bei Annahmen über die Funktionsweise von APIs vorsichtig sein.
- Trotz umfangreicher Tests wurde der Bug nicht entdeckt.
- Es wurde deutlich, dass sich die User Experience je nach Monitorkonfiguration unterscheiden kann.
-
Änderung vom 2024-11-19: Es gab Verwirrung über die Verwendung von
screenX, und die Navigationskomponente wurde refaktoriert. Im nächsten Blogpost sollen der Refactoring-Prozess und Antworten auf Fragen folgen.
1 Kommentare
Hacker-News-Kommentare
Es wird erklärt, warum sich das Öffnen des Menüs auf der BBC-Website per Tastatur und per Zeiger unterschiedlich verhält
click-Event nützlich, weil es geräteunabhängig istEs wird vorgeschlagen,
isInvokedByMouseso zu ändern, dass geprüft wird, obscreenXundscreenYungleich 0 sindDie Investitionen der BBC in Barrierefreiheit und das Auffinden des Bugs werden gelobt
Es wird versucht, das Problem mit serverseitigen Templates, einem CSS-Framework und minimalem JS zu lösen
Es wird darauf hingewiesen, dass der Bug durch eine fehlerhafte Heuristik entstanden ist
screenXundscreenYnicht nur positive, sondern auch negative Werte zu berücksichtigenEs wird infrage gestellt, warum die Website die Mausposition über Bildschirmkoordinaten ermittelt
click-Event allein bereits ausreichende Informationen liefertEs wird hinterfragt, warum Browser je nach Monitor unterschiedliche Koordinaten melden
Es wird gefragt, wie sich Mausklicks und per Tastatur ausgelöste Klicks korrekt unterscheiden lassen
mousedown- undkeydown-Events ein Flag zu setzenEs wird argumentiert, dass statt Bildschirmkoordinaten besser Viewport-Koordinaten verwendet werden sollten
Es beeindruckt, dass der Blogbeitrag ohne Freigabe durch Management und Rechtsabteilung der BBC veröffentlicht wurde