You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中keypress事件无法触发问题咨询

问题原因分析

这事儿主要有两个核心原因:

  • keypress 事件已经被废弃了
    这个事件是早年的旧API,现在现代浏览器对它的支持越来越敷衍,行为也不一致,官方早就把它标成废弃状态,推荐用 keydown 或者 keyup 来替代。

  • keyCode 在 keypress 里根本不靠谱
    keypress 设计出来是用来抓实际输入的字符,不是物理按键的。所以它一般用 charCode 属性返回字符的ASCII码,而不是物理按键的keyCode。比如你按小写w的时候,keypress的charCode是119(对应字符'w'),keyCode可能也跟着返回119而不是87;只有按住Shift按W打大写的时候,charCode和keyCode才会是87。这就导致你代码里判断keyCode=87根本触发不了——除非你按Shift+W。

而 keydown 是专门针对物理按键的事件,不管能不能打出字符都会触发,而且keyCode稳定对应物理按键的编码,所以你换成keydown就正常工作了。

要是你非得用keypress(真心不推荐),可以改成判断charCode:

addEventListener('keypress', ({charCode}) => {
    switch(charCode){
        case 119: // 小写w
        case 87:  // 大写W
            alert('press')
        break;
    }
})

内容的提问来源于stack exchange,提问作者confusedPro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:25:41