Tình hình: Tôi có một handler keydown
với một switch
cho khóa những gì được nhấn, công cụ khá chuẩn, nhưng khi một phím bất kỳ được tổ chức xuống keydown
cháy sự kiện lặp đi lặp lại (chứ không phải chỉ một lần khi phím được nhấn thực sự).Force KeyDown để bắn chỉ một lần mỗi keyCode
Tại sao đó là một vấn đề: Tôi muốn giữ keydown
lắng nghe tích cực, tức là khả năng phát hiện nhiều hơn một chìa khóa được ép cùng một lúc, nhưng chỉ có ngọn lửa sự kiện một lần mỗi keydown
. Tôi sẽ muốn làm một cái gì đó trên keyup
cho rằng keyCode
dựa trên thời gian từ lên xuống, nhưng thời gian đó là nhận được hơi say lên vì nhiều firings.
Những gì tôi đã cố gắng: Tôi hiện đang giữ một danh sách các keyCodes
mà xuống, và kiểm tra đối với những người trong keydown
xử lý của tôi để giữ cho các hành vi mặc định xảy ra nếu keyCode
có trong danh sách của tôi. Tuy nhiên, sự kiện này vẫn diễn ra rất thường xuyên và tôi lo ngại về hiệu quả/sự thanh lịch của giải pháp này.
Câu hỏi thực tế: Có cách nào tốt để hạn chế bắn của sự kiện keydown
để chỉ khi phím được thể chất bị đẩy xuống, hoặc chỉ để nghe cho mã phím cụ thể?
"tức là có thể phát hiện nhiều hơn một phím được nhấn cùng một lúc" Điều đó có nghĩa là gì? – epascarello
Ví dụ: giữ phím 'y', sau đó nhấn và giữ phím 'o'. Điều này loại trừ giải pháp xóa sự kiện keydown và thêm lại sau khi khóa. –