在javascript中处理特殊键的事件

Handle special keys' events in javascript

本文关键字:事件 javascript 处理      更新时间:2023-09-26

我已经在我的 Web 应用程序中覆盖了 onkeyup 和 onkeydown 函数,我想使用键盘的暂停/中断键。

但似乎这是一个特殊的键,并且具有奇怪的行为。在 keydown 事件之后,它会立即触发 keyup,即使您使用 preventDefault() 和 stopPropagation() 方法也是如此。

以下脚本应清楚地演示行为。首先按住空格键。在您把手从空格键上移开之前,不会弹出任何警报。然后尝试使用暂停/中断键进行相同的操作,按下该键后应该会收到警报。

https://jsfiddle.net/at3L9o73/2/

window.onkeydown = keydown;
window.onkeyup = keyup;
function keydown(event)
{   
    if(event.keyCode == 19)
    {
        event.preventDefault();
        event.stopPropagation();
        console.log("break down");
    }
  else if(event.keyCode == 32)
    {
        event.preventDefault();
        event.stopPropagation();
        console.log("space down");
    }
}
function keyup(event)
{   
    if(event.keyCode == 19)
    {
        event.preventDefault();
        event.stopPropagation();
        console.log("break up");
    window.alert("break keyp????");
    }
  else if(event.keyCode == 32)
    {
        event.preventDefault();
        event.stopPropagation();
        console.log("space up");
    window.alert("space keyp");
    }  
}

提前致谢

好像

是我的键盘!我使用戴尔和惠普键盘检查了脚本,没有任何意外行为。

经过进一步调查,我发现有报告称某些键盘(如我的键盘)会像我描述的那样处理暂停/中断和打印屏幕/sysrq 键。按下时同时发送键控和键控序列,释放时不发送任何内容。

本文描述了类似的行为:

键盘扫描码 - 特殊键盘