Javascript 数字键映射

Javascript Key Mapping for number

我在我的网站上创建了一个快捷方式

alt + 1 = something()
alt + 2 = something()
shift + 1 = something()
...

window.addEventListner("keydown",(e) => {
if(e.key === 1 && e.alt) doSomething(); 
})

但问题是当我按下 shift+1 它变成了 shift + ! 键变成了特殊字符!而 alt(option) + 1 是 ¡
我应该为每个特殊字符制作一个 Key Map 吗?或者有其他好的方法吗?

您可以使用 code 属性 并查找字符串 "Digit1"。这就是 code 的目的,为您提供一个不受修饰键影响的键名。

这是一个差异的演示:

window.addEventListener("keydown",(e) => {
    console.log(`key = ${e.key}, code = ${e.code}`);
});
Click here, then press 1, and then press !.

例如:

if (e.altKey && e.code === "Digit1") {
    // ...
}

(注意是altKey,不是alt,看Alt键是否按下。)