बाहरी मॉनिटर के कारण खराब हुआ BBC navigation bar component
(joshtumath.uk)-
BBC navigation bar component का बग
- हाल ही में टीम ने एक अजीब बग को ठीक किया। उसे सिर्फ एक टीम सदस्य ही reproduce कर पा रहा था, और वह भी सिर्फ घर पर।
-
बग का कारण
- BBC वेबसाइट पर 'More' बटन क्लिक करने पर मेन्यू खुलना चाहिए था, लेकिन बाहरी मॉनिटर पर यह काम नहीं कर रहा था।
- यह समस्या सिर्फ बाहरी मॉनिटर पर होती थी, और Safari में यह समस्या नहीं थी।
-
समस्या को reproduce करना
- पता चला कि बग सिर्फ तब होता था जब बाहरी मॉनिटर लैपटॉप के ऊपर रखा हो।
- OS settings में मॉनिटर की position बदलकर इस समस्या को reproduce किया जा सकता था।
-
जांच की प्रक्रिया
- पहला संकेत: Safari में बग नहीं होता था।
- दूसरा संकेत: यह सिर्फ तब होता था जब बाहरी मॉनिटर मुख्य मॉनिटर के ऊपर और बाईं ओर होता था।
- तीसरा संकेत: Chrome और Firefox में
screenXऔरscreenYकी values negative थीं। - चौथा संकेत: बग सिर्फ तब होता था जब
screenXऔरscreenYnegative हों। - पांचवां संकेत: Chrome और Firefox में मुख्य मॉनिटर का ऊपर-बायां कोना (0,0) coordinate होता है।
-
समाधान
isInvokedByMousefunction को बदलकर यह जांच की गई किscreenXऔरscreenY0 नहीं हैं।- समस्या जटिल थी, लेकिन समाधान सरल निकला।
- code refactoring की जरूरत है, लेकिन फिलहाल यह समाधान पर्याप्त है।
-
सीख
- API कैसे काम करते हैं, इस बारे में की गई धारणाओं से सावधान रहना चाहिए।
- कई तरह की testing के बावजूद यह बग पकड़ में नहीं आया।
- इससे पता चला कि मॉनिटर configuration के अनुसार user experience बदल सकता है।
-
2024-11-19 संशोधन:
screenXके उपयोग को लेकर भ्रम था, और navigation component को refactor किया गया। अगले blog post में refactoring process और सवालों के जवाब दिए जाएंगे।
1 टिप्पणियां
Hacker News की राय
यह बताता है कि BBC की वेबसाइट पर कीबोर्ड और पॉइंटर से मेनू खोलने पर अलग व्यवहार क्यों दिखता है
clickevent device-independent होने के कारण उपयोगी हैisInvokedByMouseको संशोधित करscreenXऔरscreenYके 0 न होने की जांच करने का तरीका सुझाया गया हैBBC के accessibility में निवेश और bug खोजने की सराहना की गई है
server-side template, CSS framework, और न्यूनतम JS का उपयोग करके समस्या हल करने की कोशिश की गई
यह इंगित किया गया है कि bug गलत heuristic की वजह से हुआ
screenXऔरscreenYcoordinates जांचते समय केवल positive ही नहीं बल्कि negative values भी देखी जानी चाहिएयह सवाल उठाया गया है कि वेबसाइट screen coordinates से माउस की स्थिति क्यों लेती है
clickevent भी पर्याप्त जानकारी देता हैइस पर जिज्ञासा व्यक्त की गई है कि browser monitor के अनुसार अलग coordinates क्यों report करता है
माउस click और कीबोर्ड click में फर्क करने के सही तरीके पर सवाल किया गया है
mousedownऔरkeydownevents के आधार पर flag सेट करने का तरीका सुझाया गया हैतर्क दिया गया है कि screen coordinates की जगह viewport coordinates का उपयोग करना चाहिए
BBC के management और legal team की मंजूरी के बिना blog लिखने से प्रभावित होने की बात कही गई है