7

Tôi đang xử lý khóa trong tập lệnh java. Tôi đã thực hiện một số nghiên cứu và tôi muốn biết liệu tôi có hiểu biết chính xác về xử lý chính hay không.Xử lý khóa JavaScript và khả năng tương thích của trình duyệt

KeyDown/KeyUp Event Chìa khóa xuống và chìa khóa lên sự kiện được hỗ trợ bởi IE7 + và Firefox 3.5+ tôi đã không kiểm tra các phiên bản trước đó của các trình duyệt, nhưng tôi đoán rằng họ cũng ủng hộ những sự kiện này.

Có chính xác khi nói rằng mỗi phím trên bàn phím sẽ luôn có mã khóa.

charCode

giá trị charCode có sẵn trên keypress.Majority trong những chìa khóa sẽ có charcodes đại diện cho giá trị thực tế. Một số phím sẽ không có một mã số liên kết với chúng. Ví dụ. phím xóa lùi, xóa, phím mũi tên.

Tôi có đúng để nói rằng khi nhấn phím mã sẽ giống như mã khóa không?

Trình tự các sự kiện

  • KeyDown
  • KeyPress
  • KeyUp

Đơn đặt hàng này khác với trình duyệt để trình duyệt? Ví dụ tôi có hai chức năng. Đầu tiên là ràng buộc với sự kiện KeyDown, thứ hai là ràng buộc với sự kiện KeyPress. Gọi một sự kiện KeyPress có nghĩa là sự kiện KeyDown cũng sẽ được gọi, khi tôi chỉ muốn một trong những sự kiện này hoạt động.

Cuối cùng tôi đã cân nhắc sử dụng các quy trình xử lý khóa khác nhau tùy thuộc vào trình duyệt phiên bản. Ví dụ:

  • phiên bản Kiểm tra trình duyệt
  • Nhận thói quen xử lý chủ chốt tùy thuộc vào phiên bản trình duyệt

này sẽ giới thiệu mã bổ sung, nhưng nên đơn giản hóa việc bảo trì. Ngoài ra, trong tương lai, khi tôi muốn cung cấp hỗ trợ cho một trình duyệt khác, tôi có thể chỉ cần thêm một thường trình khác và nó sẽ không ảnh hưởng đến thói quen xử lý ký tự hiện có.

Cho đến nay tôi đã được đọc http://www.quirksmode.org

Trả lời

5

Bài viết sau đây bởi Jan Wolter chưa bao giờ thất bại và là nguồn tài nguyên tốt nhất trên các sự kiện quan trọng của trình duyệt Tôi đã xem: http://unixpapa.com/js/key.html. Nó trả lời tất cả các câu hỏi bạn đặt ra.

Một điều cần nhấn mạnh là sử dụng cẩn thận các thuộc tính sự kiện quan trọng theo ý của bạn, bạn sẽ gần như chắc chắn không bao giờ cần tìm kiếm một trình duyệt cụ thể trong mã xử lý khóa của bạn.

+0

Điều đẹp, thậm chí có giữ ngày hôm nay không ?? –

+0

@SurajJain: Vâng, mặc dù các trình duyệt hiện đại hỗ trợ các thuộc tính mới hơn, tốt hơn như ['key'] (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key). Tôi nghi ngờ các tài sản cũ sẽ biến mất bất kỳ thời gian sớm mặc dù chúng được chính thức không được chấp nhận. –

0

2015 update:

According to MDNevent.charCode, event.keyCodeevent.which đều bị phản đối. event.key là cách mới nhất và nóng nhất để kiểm tra xem phím nào đã được nhấn.

Có vẻ dễ sử dụng nhưng hỗ trợ trình duyệt không hoàn hảo. Tất cả những gì chúng tôi có bây giờ là hỗ trợ một phần trong Chrome 45+ (chưa ra AFAIK), Firefox 23+ và IE 9+.

+1

https://xkcd.com/927/ – aiguofer

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