首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`String.fromCharCode(event.keyCode)行为怪异

`String.fromCharCode(event.keyCode)行为怪异
EN

Stack Overflow用户
提问于 2021-03-05 21:22:59
回答 1查看 49关注 0票数 0

我的应用程序正在使用的库中有代码,这对我来说是崩溃的。该库使用String.fromCharCode(event.keyCode)来确定指定的键盘快捷键是否已被触发。无论出于什么原因,在我的机器上,非字母代码的行为都很奇怪。因此,event.key不等于String.fromCharCode(event.keyCode)。现在,我不知道为什么他们使用String.fromCharCode(event.keyCode)而不是event.key,但我不能更改他们的代码,所以我试图理解为什么我的机器在这里生成不同的值。

当我附加keydown事件侦听器时:

代码语言:javascript
复制
document.addEventListener('keydown', event => console.log(event.keyCode, event.key, String.fromCharCode(event.keyCode).toLowerCase()))

我得到了这些日志:

代码语言:javascript
复制
219 – "[" – "û"
189 – "-" – "½"
187 – "=" – "»"
221 – "]" – "ý"
186 – ";" – "º"

这个世界是怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2021-03-05 21:27:38

charCodeAt给出了UTF-16代码单元,而不是密钥代码。

密钥代码与keys on a keyboard相关联,而不与字符相关联:

KeyboardEvent.code属性表示键盘上的一个物理键(与按下该键生成的字符相反)。换句话说,此属性返回的值不会因键盘布局或修改键的状态而改变。

要获得它,您需要处理一个实际的密钥:

代码语言:javascript
复制
document.querySelector("textarea").addEventListener('keydown', handler);

function handler(evt) {
  console.log({
    keyCode: evt.keyCode,
    code: evt.code,
    key: evt.key
  });
}
代码语言:javascript
复制
<textarea placeholder="Type here"></textarea>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66493368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档