最近在 BBC 網站導航中發現的一個特殊錯誤,引發了關於網路無障礙實踐和現代網路開發中處理不同輸入方式挑戰的激烈討論。雖然原始文章主要關注螢幕座標的技術層面,但社群討論揭示了關於無障礙實現方法和瀏覽器互操作性的更深層次問題。
無障礙困境
核心爭議在於網站是否應該為鍵盤和滑鼠輸入實現不同的行為。一些開發者主張在所有輸入方式中保持一致的行為,而另一些人則指出,實現真正的無障礙訪問通常需要專門的處理方式。這一點在涉及螢幕閱讀器和替代輸入裝置的情況下尤為明顯,因為使用者需求可能與傳統的基於滑鼠的導航有很大差異。
當然存在一些特殊情況,我也在公共部門從事無障礙工作,那裡的 WCAG 規則是非常嚴格的。即便如此,我們也不會為使用者構建自定義的無障礙介面。我們(儘量)在設計介面時就考慮到無障礙性,使其具有可擴充套件性,能夠透過語音和鍵盤正確使用和導航。
無障礙設計考慮因素:
- WCAG 規範合規要求
- 螢幕閱讀器相容性
- 多種輸入方式支援
- 焦點管理
- 針對不同使用者需求的動畫處理
技術實現問題
社群已經確定了幾個可能改進 BBC 當前實現的方案。許多開發者建議使用更可靠的方法,如檢查 pointerType
或 event.detail
來代替螢幕座標來確定輸入型別。討論強調了當前解決方案雖然可用,但在某些邊緣情況下可能會失效,比如使用者的滑鼠指標實際位於座標(0,0)或使用替代輸入裝置時。
主要技術要點:
- 原始問題:在外接顯示器上 screenX/screenY 返回負值
- 當前解決方案:檢查非零座標而不是正值
- 建議的替代方案:
- 對鍵盤事件使用 pointerId === -1
- 檢查 event.pointerType
- 使用 event.detail(滑鼠點選為1,鍵盤為0)
瀏覽器互操作性問題
討論的一個重要焦點是為什麼網站需要訪問螢幕座標。社群對潛在的隱私影響和指紋識別風險表示擔憂,有人指出 Tor Browser 已經在偽裝這些值。這引發了一個問題:考慮到螢幕座標的合法使用場景有限,是否應該向網站暴露絕對螢幕座標。
未來考慮
討論表明需要更標準化的方法來處理網路應用中的不同輸入方式。開發者提倡在網路標準中更好地規範輸入處理,並在各瀏覽器中實現更一致的實現。這可能包括專門為裝置無關的啟用設計的新事件,而不是依賴基於螢幕座標的啟發式方法。
社群對這個錯誤修復的反應突顯了平衡無障礙需求與健壯、可維護程式碼之間的持續挑戰。雖然 BBC 的解決方案適用於他們的特定情況,但它引發了關於網路無障礙實現最佳實踐和改進標準需求的有價值討論。
來源引用:How a BBC navigation bar component broke depending on which external monitor it was on
![]() |
---|
這張截圖展示了 macOS 系統中顯示設定的管理方式,突顯了在網路應用程式中適配多種輸入方式和顯示器時所涉及的複雜性 |