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

已废弃的keyCode应替换为哪种方案?HTML双人足球游戏开发求助

替代废弃keyCode的解决方案

keyCode已被Web标准废弃,推荐使用**e.key或e.code**这两个标准属性处理键盘事件,它们更直观且兼容性更可靠。

方案1:使用e.key

e.key返回按键对应的字符或功能名称(比如字母键返回小写/大写字符,方向键返回ArrowUp/ArrowDown等),适合直接关联按键的输入含义。

修改后的代码如下:

document.onkeyup = function(e){
    if(e.key === 'w'){
        wDown = false;
    }
    if(e.key === 'a'){
        aDown = false;
    }
    if(e.key === 'd'){
        dDown = false;
    }
    if(e.key === 's'){
        sDown = false;
    }
    if(e.key === 'ArrowUp'){
        upDown = false;
    }
    if(e.key === 'ArrowLeft'){
        leftDown = false;
    }
    if(e.key === 'ArrowDown'){
        downDown = false;
    }
    if(e.key === 'ArrowRight'){
        rightDown = false;
    }
}

document.onkeydown = function(e){
    if(e.key === 'w'){
        wDown = true;
    }
    if(e.key === 'a'){
        aDown = true;
    }
    if(e.key === 'd'){
        dDown = true;
    }
    if(e.key === 's'){
        sDown = true;
    }
    if(e.key === 'ArrowUp'){
        upDown = true;
    }
    if(e.key === 'ArrowLeft'){
        leftDown = true;
    }
    if(e.key === 'ArrowDown'){
        downDown = true;
    }
    if(e.key === 'ArrowRight'){
        rightDown = true;
    }
}

方案2:使用e.code

e.code返回按键的物理位置标识(比如W键对应KeyW,上箭头对应ArrowUp),适合固定物理按键位置的场景(比如游戏中不管键盘布局,按左上角W键就触发动作)。

对应代码修改示例:

document.onkeyup = function(e){
    if(e.code === 'KeyW'){
        wDown = false;
    }
    if(e.code === 'KeyA'){
        aDown = false;
    }
    if(e.code === 'KeyD'){
        dDown = false;
    }
    if(e.code === 'KeyS'){
        sDown = false;
    }
    if(e.code === 'ArrowUp'){
        upDown = false;
    }
    // 其余判断同理替换
}

注意事项

  • 若需区分大小写,可结合e.shiftKey判断,比如e.key === 'W'且e.shiftKey为true时触发对应逻辑
  • 两种属性目前均被主流浏览器(Chrome、Firefox、Edge等)支持,无需担心兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:07:30