为什么^的JS键盘代码返回无效?

时间:2018-12-24 05:09:25

标签: javascript javascript-events

我正在做一个简单的JS脚本,该脚本将接收所有键盘事件并在屏幕上显示它们。每次我在键盘JS上尝试符号^(Alt Gr + ^)时,都会返回无效代码。

为什么会这样,我该如何解决?

谢谢

editor.addEventListener('keydown', function (e) {
    var keyNum = event.which || event.keyCode;

    switch(keyNum) {
    case 9:
        buffer += "\t";
        break;
    case 13:
        buffer += "\n";
        break;
    default:
        if (window.event) { // IE
            key = e.key;
        } else if (e.which){ // Netscape/Firefox/Opera
            key = e.which;
        } 
        buffer += key;
        break;
    }

    renderText(buffer);
});

2 个答案:

答案 0 :(得分:1)

不推荐使用键盘事件whichkeyCode,并且已经使用了很多年。您应该使用key,这是一种现代方法,可以准确确定在所有键盘和语言中按下的键值。

addEventListener('keydown', function (event) {
  console.log(event.key);
});

从上面的链接

  

如果KeyboardEvent表示按下了某个死键,则该键的值必须为“死键”。

答案 1 :(得分:-1)

在例如美国或英国键盘上输入 {Shift}6 来获得 ^ 时很好用,它可以正常工作。

在其他语言中,您必须输入不同的内容,例如德语键盘仅提供 ^/°(左上角的键)

e.key = "Dead"
e.code = "Backquote"
e.keyCode = 220

所以如果没有特殊的大小写(并且可能猜测您的用户使用哪种语言键盘),解释“死”似乎很困难