-
Lỗi trong thành phần thanh điều hướng của BBC
- Gần đây nhóm đã xử lý một lỗi kỳ lạ. Chỉ có một thành viên trong nhóm tái hiện được và nó chỉ xảy ra ở nhà.
-
Nguyên nhân của lỗi
- Khi nhấp vào nút 'Xem thêm' trên website BBC, menu lẽ ra phải mở ra, nhưng trên màn hình ngoài thì lại không hoạt động.
- Lỗi chỉ xảy ra trên màn hình ngoài và không có vấn đề gì trên Safari.
-
Tái hiện lỗi
- Họ phát hiện lỗi chỉ xảy ra khi màn hình ngoài được đặt ở phía trên laptop.
- Có thể tái hiện vấn đề bằng cách điều chỉnh vị trí màn hình trong phần cài đặt của hệ điều hành.
-
Quá trình điều tra
- Manh mối đầu tiên: Lỗi không xảy ra trên Safari.
- Manh mối thứ hai: Chỉ xảy ra khi màn hình ngoài nằm phía trên và bên trái màn hình chính.
- Manh mối thứ ba: Trên Chrome và Firefox, giá trị
screenXvàscreenYlà số âm. - Manh mối thứ tư: Lỗi chỉ xảy ra khi
screenXvàscreenYlà số âm. - Manh mối thứ năm: Trên Chrome và Firefox, góc trên bên trái của màn hình chính có tọa độ (0,0).
-
Cách khắc phục
- Đã sửa hàm
isInvokedByMouseđể kiểm tra xemscreenXvàscreenYcó khác 0 hay không. - Vấn đề khá phức tạp nhưng cách giải quyết lại đơn giản.
- Cần refactor mã, nhưng giải pháp hiện tại là đủ.
- Đã sửa hàm
-
Bài học rút ra
- Cần cẩn thận với các giả định về cách API hoạt động.
- Dù đã kiểm thử đa dạng, lỗi này vẫn không bị phát hiện.
- Điều này cho thấy trải nghiệm người dùng có thể thay đổi tùy theo cấu hình màn hình.
-
Chỉnh sửa 2024-11-19: Có sự nhầm lẫn về việc sử dụng
screenX, và thành phần điều hướng đã được refactor. Bài blog tiếp theo sẽ trình bày quá trình refactor và trả lời các câu hỏi.
1 bình luận
Ý kiến Hacker News
Giải thích lý do menu trên website của BBC có hành vi khác nhau khi mở bằng bàn phím và con trỏ
clickhữu ích vì nó độc lập với thiết bịĐề xuất sửa
isInvokedByMousebằng cách kiểm trascreenXvàscreenYcó khác 0 hay khôngKhen ngợi khoản đầu tư của BBC vào khả năng truy cập và việc phát hiện lỗi
Cố gắng giải quyết vấn đề bằng server-side template, CSS framework và lượng JS tối thiểu
Chỉ ra đây là lỗi phát sinh từ một heuristic sai
screenXvàscreenYthì phải xét cả giá trị âm chứ không chỉ giá trị dươngĐặt nghi vấn vì sao website lại lấy vị trí chuột bằng tọa độ màn hình
clickcũng đã cung cấp đủ thông tinThắc mắc vì sao trình duyệt báo cáo tọa độ khác nhau tùy theo màn hình
Hỏi cách đúng để phân biệt click chuột và click bằng bàn phím
mousedownvàkeydownLập luận rằng nên dùng tọa độ viewport thay vì tọa độ màn hình
Ấn tượng vì bài blog được viết mà không cần sự phê duyệt từ bộ phận quản lý và pháp lý của BBC