2013-08-11 38 views
5

Hãy xem this live demo (từ trang web của jQuery).Tại sao sự kiện của jQuery lại mang lại kết quả khác nhau trong Firefox và Chrome?

Nhấp vào - (dấu gạch ngang) trong Firefox cho biết event.which173, trong khi thực hiện tương tự trong Chrome tạo ra 189.

This jQuery page nói rằng event.which nên được chuẩn hóa để đảm bảo tính nhất quán của trình duyệt chéo. Nhưng, có vẻ như điều này không đúng.

Tại sao sự không thống nhất này?

Trả lời

4

Trang jQuery này cho biết sự kiện đó cần được chuẩn hóa cho tính nhất quán của trình duyệt chéo. Nhưng, có vẻ như điều này không đúng.

jQuery bình thường hóa các tài sản tên (ví dụ, luôn which, chứ không phải là which hoặc keyCode tùy thuộc vào trình duyệt), nhưng không phải là giá trị của tài sản, đó sẽ là đáng kể phức tạp hơn.

Giá trị cho khóa bạn nhận được từ keydown/keyup sẽ không chỉ khác nhau tùy theo trình duyệt mà bằng cách bố trí bàn phím. Có rất nhiều chi tiết đẫm máu trên trang JavaScript Madness: Keyboard Events bởi Jan Wolter. Trong số những thứ khác, bạn có thể thấy trên trang đó cho khóa đó, Firefox sẽ cung cấp cho bạn 109, IE (và dường như Chrome) sẽ cung cấp cho bạn 189, và Opera dường như đã sử dụng 45 (nhưng trong các thử nghiệm của tôi trên Linux, bây giờ họ đi với 109).

Đối với các lần nhấn phím có thể in (như -), bạn nên tắt với sự kiện keypress, cho bạn ký tự kết quả.

+0

Cảm ơn rất nhiều vì đã làm rõ! –

+0

Kể từ jQuery 1.11, nó không xuất hiện mà jQuery hoàn toàn bình thường hoá thuộc tính 'event.which', ít nhất là dưới FireFox. Như có thể thấy ở đây: http://jsbin.com/sozoqiro/1/edit?html,console 'event.which' và' event.keyCode' đều có các giá trị khác nhau tùy thuộc vào phím bạn nhấn. Nhấn một ký tự in dường như điền vào 'e.which' trong khi phím Tab ví dụ populates' e.keyCode' và phím Enter sẽ điền cả 'e.which' và' e.keyCode' với cùng giá trị. Trong FireFox, giá trị thuộc tính chưa được giải phóng được đặt thành '0'. – DavidScherer

+0

Trong Chrome, điều này có vẻ đã được chuẩn hóa, nhưng 'nhấn phím 'dường như không kích hoạt cho các phím Tab trong Chrome. – DavidScherer

Các vấn đề liên quan