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

如何在IE8及更低版本浏览器中获取按下按键的对应字符?

获取IE8中按下按键对应的字符

在IE8里,keydown事件确实没法直接拿到按下的字符——因为这个事件的设计是监听物理按键的按下动作,而非实际输入的字符。你在控制台看不到字符相关属性也很正常,因为keydown的keyCode对应的是按键的物理编码(比如大小写A的keyCode都是65),不是字符的ASCII码。

要解决这个问题,你需要切换到监听keypress事件,这个事件是在字符实际被输入时触发的,IE8里它的keyCode(或which)就是字符的ASCII编码,再通过String.fromCharCode()就能转成对应的字符了。

兼容IE8的实现代码

document.onkeypress = function(event) {
    // 兼容IE8的事件对象获取
    event = event || window.event;
    // 获取字符编码(兼容不同浏览器的属性)
    var charCode = event.keyCode || event.which;
    // 转成对应的字符
    var pressedChar = String.fromCharCode(charCode);
    
    console.log('按下的字符:', pressedChar);
    console.log('字符编码:', charCode);
};

额外说明

  • 区分keydown和keypress:如果需要捕获功能键(比如Ctrl、Shift、F1这类不会产生字符的按键),还是得用keydown;但如果只需要获取输入的字符,keypress是更合适的选择。
  • 特殊字符处理:像Enter键(编码13)、Tab键(编码9)这类按键,转出来的字符是控制字符,你可以根据需求做判断过滤:
    if (charCode >= 32 && charCode <= 126) {
        // 只处理可打印字符
        console.log('可打印字符:', pressedChar);
    }
    
  • 大小写区分:keypress的编码会区分大小写(比如小写a是97,大写A是65),这和keydown返回的物理键码不同,刚好符合你获取实际输入字符的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:53:48