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ả.
Nguồn
2013-08-12 10:42:25
Cảm ơn rất nhiều vì đã làm rõ! –
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
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