【问题标题】:KeyboardEvent.keyCode deprecated, but what about diacritics?KeyboardEvent.keyCode 已弃用,但变音符号呢?
【发布时间】:2021-09-23 15:26:25
【问题描述】:

我们在我工作的公司遇到了一个有趣的错误:我们有一个包含许多快捷键的应用程序,包括“`”(反引号字符),并且因为KeyboardEvent.keyCode has been deprecated,它在重构时被更改了

KeyboardEvent.keyCode === 192

KeyboardEvent.key === '`'

这适用于未激活变音符号的键盘 - 例如,没有变音符号的美式键盘,按下 ` 键会立即写入 ` 字符 - 而对于激活变音符号的用户,则不会(在这种情况下,键入 `需要先按 ` 键,然后按空格),因为如果按 ` 键,然后按字母 a,例如,您会得到字符 à。显然激活变音符号后,KeyboardEvent.key 返回Dead,所以我们不得不恢复这个重构。

话虽如此,使用这个已弃用的功能是否有不同的选择?

【问题讨论】:

  • 问题是你想检索什么信息?我的意思是192 不一定代表`,对于德国布局,它是例如187.
  • @t.niese 这个想法是在用户按下 Tab 键上方的键时触发一个事件。
  • 那么tab上面的物理键到底是什么?
  • 是的,就是这个想法。不过,我不确定它是否在美国以外的其他布局中进行了测试。
  • 好的,因为codeBackquote 将等于在德国布局的键盘上按下^ 键(tab 键上方的那个)。当在德国布局上按下´ 时,您将得到Equal 作为code。并且` 没有专用密钥,但可以使用Shift key+ ´

标签: javascript events keyboard-events


【解决方案1】:

【讨论】:

  • 谢谢丹尼尔。在我的键盘上(美国有死键)它返回KeyboardEvent.key === 'Dead' && KeyboardEvent.code === 'Backquote'。所以要走的路可能是用 KeyboardEvent.key === '`' || 测试它(KeyboardEvent.key === 'Dead' && KeyboardEvent.code === 'Backquote')
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 2013-08-20
  • 2012-11-08
相关资源
最近更新 更多