如何检查onKeyPress在onKeyDown之后是否未启动

How can I check that onKeyPress has NOT fired after onKeyDown?

本文关键字:之后 onKeyDown 是否 启动 onKeyPress 何检查 检查      更新时间:2023-09-26

有些键同时触发onKeyDown和onKeyPress事件,如A,而有些键只触发onKeyDown,如SHIFT。如何检查onKeyPress是否没有为特定密钥触发?我需要在按下键后立即检测到它,所以由于延迟,我无法使用onKeyUp。

在这种情况下,您只能使用onKeyUp,因为onKeyPress是在onKeyDown之后和onKeyUp之前激发的。您可以存储onKeyPress是否已被这样的密钥触发:

var keyPressedFired = false;
document.addEventListener("keypress", function(e) {
    keyPressedFired = true;
});
document.addEventListener("keyup", function(e) {
    if (!keyPressedFired) {
        alert('KeyPress not fired this key');
    }
    keyPressedFired = false;
});

运行代码段,单击其下方的白色部分,然后按SHIFT