Chức năng của sự kiện javascript là gì? Xin vui lòng ngắn gọn với ví dụ.sự kiện javascript e.which?
Trả lời
e.which
không phải là sự kiện, which
là thuộc tính của đối tượng event
, mà hầu hết mọi người gắn nhãn là e
trong trình xử lý sự kiện của họ. Nó chứa mã khóa của khóa được nhấn để kích hoạt sự kiện (ví dụ: keydown, keyup).
document.onkeypress = function(myEvent) { // doesn't have to be "e"
console.log(myEvent.which);
};
Với mã đó, bảng điều khiển sẽ in mã của bất kỳ phím nào bạn nhấn trên bàn phím.
Nó không thực sự yêu cầu Firebug, chỉ một số loại console.log (mà nhiều hơn Firebug cung cấp, ví dụ như webkitt-ens). – npup
'cũng' tồn tại trên các sự kiện chuột và ví dụ của bạn sẽ không hoạt động trên IE, trong đó trình xử lý sự kiện không nhận được tham số sự kiện. –
Chỉ cần một lưu ý giúp đỡ cho tất cả những người tìm thấy điều này (sẽ đăng trên e.which câu hỏi khác quá prolly quá). Tôi đã thực hiện một bài đăng tại các diễn đàn jQuery liệt kê một phần lớn các mã e.which và các khóa liên quan của chúng. Bài đăng ở đây -> http://forum.jquery.com/topic/eventwhich-code-list-just-for-help – SpYk3HH
which
là tài sản của Event
đối tượng. Nó được định nghĩa cho các sự kiện liên quan đến khóa và chuột trong hầu hết các trình duyệt, nhưng trong cả hai trường hợp không được định nghĩa trong IE (trước phiên bản 9).
Đối với sự kiện liên quan đến chuột, which
chỉ định nút chuột có liên quan. Đối với IE < 9, giá trị tương đương được tìm thấy trong window.event.button
. Chỉ cần làm phức tạp mọi thứ, trình duyệt không phải của IE cũng hỗ trợ thuộc tính button
của các sự kiện chuột đôi khi báo cáo một giá trị khác từ which
. Ngoài ra, các trình duyệt đôi khi có các giá trị khác nhau cho cùng một nút hoặc kết hợp các nút. Nếu bạn muốn sử dụng which
trong tất cả các trình duyệt hỗ trợ nó và button
trong IE < 9, hằng số là giá trị 1 luôn có nghĩa là nút chuột trái được tham gia (mặc dù không nhất thiết phải là một mình).
document.onmousedown = function(e) {
e = e || window.event;
var button = (typeof e.which != "undefined") ? e.which : e.button;
if (button == 1) {
alert("Left mouse button down");
}
};
Để phân tích đầy đủ, tôi khuyên bạn nên Jan Wolter's article on JavaScript mouse events.
Đối với các sự kiện liên quan đến khóa, which
liên quan đến khóa đã được nhấn. Đối với các sự kiện keydown
và keyup
, điều này tương đối đơn giản: đó là mã khóa cho phím được bấm và trả về cùng giá trị với thuộc tính keyCode
của sự kiện. Vì tất cả các trình duyệt đều hỗ trợ thuộc tính keyCode
và IE < 9 không hỗ trợ which
, bạn thường nên sử dụng keyCode
cho các sự kiện keydown
và keyup
.
Đối với keypress
sự kiện, tình hình phức tạp hơn. Đối với các phím ký tự có thể in, which
là mã ký tự cho phím được bấm và được hỗ trợ trong nhiều trình duyệt hơn thuộc tính charCode
. Trong IE < 9 tương đương lại thuộc tính keyCode
. Vì vậy, để phát hiện các ký tự gõ, sau đây là một phương pháp tiếp cận qua trình duyệt. Hãy nhận biết rằng mã dưới đây không nên được sử dụng cho các phím không thể in được như các phím mũi tên, mà bạn thay vì phải phát hiện trong trường hợp keydown
:
document.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
if (charCode) {
alert("Character typed: " + String.fromCharCode(charCode));
}
};
Một lần nữa, để biết thêm chi tiết Tôi khuyên bạn nên Jan Wolter's article on JavaScript key events
Tôi không hiểu tại sao đây không phải là câu trả lời được chấp nhận ?! – Toskan
@Toskan: Câu trả lời được chấp nhận đã được đăng một vài giờ trước khi tôi, và có thể đã được chấp nhận trước khi tôi đăng bài của tôi. –
OP cho phép _Tim down_ bằng cách không chấp nhận điều này làm câu trả lời! :) – sohaiby
này tính năng đã bị xóa khỏi các tiêu chuẩn Web. Mặc dù một số trình duyệt vẫn có thể hỗ trợ nó, nó đang trong quá trình bị loại bỏ. Không sử dụng nó trong các dự án cũ hoặc mới. Các trang hoặc ứng dụng web sử dụng nó có thể bị hỏng bất cứ lúc nào.
Thay vào đó, bạn nên sử dụng KeyboardEvent.key
nếu có.
Trong một sự kiện, e
:
e.which
là giống như:
e.keyCode
Vì vậy, cả hai chức năng cho phép bạn để có được những keycode của phím nhấn trong một phím nhấn, sự kiện keydown hoặc keyup
Nhiều người sử dụng ||
(OR) để đảm bảo mã của họ hoạt động trong các trình duyệt không hỗ trợ thuộc tính nào. Xem mã bên dưới:
document.onkeypress = function(e) {
var key = e.which || e.keyCode;
alert(key);
}
Hey guys câu trả lời của tôi là chính xác chỉ cần thử nó !! –
- 1. Sự kiện JavaScript - OffFocus?
- 2. Sự kiện chạm ánh xạ JavaScript tới sự kiện chuột
- 3. Thuật ngữ sự kiện JavaScript
- 4. Xem nghe sự kiện - Javascript
- 5. Trình tự sự kiện JavaScript
- 6. Hủy sự kiện onBlur trong JavaScript?
- 7. Sự kiện nhấn phím tab trong JavaScript?
- 8. Javascript: Nhiều sự kiện mouseout kích hoạt
- 9. Máy trạng thái sự kiện JavaScript
- 10. javascript/DOM tên sự kiện ước
- 11. kích hoạt sự kiện "dán" trong Javascript
- 12. Sự kiện tuyên truyền trong Javascript
- 13. Sự kiện hộp văn bản Javascript
- 14. Javascript sự kiện inline cú pháp
- 15. Sự kiện tùy chỉnh trong HTML, Javascript
- 16. Javascript: tọa độ sự kiện IE8
- 17. Sự kiện thay đổi thuộc tính javascript
- 18. Xem sự kiện javascript trong trình duyệt
- 19. sự kiện javascript trên nhiều cửa sổ
- 20. Thêm sự kiện vào nút với javascript
- 21. Khẳng định sự kiện tải ảnh Javascript
- 22. Sự kiện chạm Javascript chậm trên Android
- 23. Sự kiện Javascript trên trang đăng lại
- 24. Sự kiện hiển thị JQuery/Javascript/DOM
- 25. JavaScript/jQuery - giải pháp sự kiện onhashchange
- 26. Thư viện sự kiện mô-đun javascript
- 27. sự kiện lựa chọn văn bản javascript
- 28. Tôi có thể bọc một sự kiện javascript trong một sự kiện jQuery không?
- 29. jQuery: Phát hiện ép nút chuột trong sự kiện MouseMove
- 30. Cách đóng các sự kiện Sự kiện máy chủ gửi
thì tại sao chúng ta cần diễn đàn? Mỗi người có thể google truy vấn của họ. Nó chia sẻ kiến thức. – minil
Hai năm sau, tôi đã không hiểu được tài sản này sau khi đọc nhiều trang ở nơi khác. Sau đó, tôi tình cờ gặp bài đăng cũ này và hiểu rồi. Vì vậy, để @Reigel, có thể xem xét lại trước khi nói với ai đó để Google một cái gì đó. Có lẽ họ đã làm. Đó không phải là mục đích của SO. – Aerovistae
Giống với @JuanMendes – Aerovistae