gpt4 book ai didi

javascript - 如何判断 KeyboardEvent.key 是可打印字符还是控制字符?

转载 作者:行者123 更新时间:2023-12-01 17:27:50 28 4
gpt4 key购买 nike

我正在编写一个按键事件,它为某些控制字符执行特殊功能,但将任何可打印字符插入到字符串中。

this.handle_keypress = function(event) {
let callback = this.control_function[event.key];
if(callback) {
callback.bind(this)(event);
}
else {
this.myText += event.key;
}
}

this.element.addEventListener('keypress', this.handle_keypress.bind(this));

但这会将未映射的控制字符的文本插入到我的字符串中(例如“LeftArrow”或“Backspace”)。如何分辨哪些字符是可打印字符,哪些是控制字符?

过去,我会使用 event.which 或 event.charCode,但现在这些已被标记为已弃用。

据我所知,我不能使用输入事件,因为我没有输入文本区域或输入字段。

我在 Firefox 中运行它。

最佳答案

没有直接的方法来确定 event.key是一个控制字符。
但鉴于:

  • 控制字符的名称目前都是多个字符长(例如,“Escape”),并且只包含字母和数字
  • ASCII 字符长度为 1
  • 非 ASCII 字符包含 [a-zA-Z]
  • 范围之外的字节

    您可以编写代码来决定以下两者之一:
    var letters = [];

    elm.addEventListener("keydown", function(e) {
    if(e.key.length == 1 || (e.key.length > 1 && /[^a-zA-Z0-9]/.test(e.key))) {
    letters.push(e.key);

    } else if(e.key == "Spacebar") {
    letters.push(" ");
    }
    }, false);

    关于javascript - 如何判断 KeyboardEvent.key 是可打印字符还是控制字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296562/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com