`KeyboardEvent.key`在Mac OS X上按住“ Meta”和“ Shift”时不大写

问题描述 投票:1回答:1

[在Mac OS X的Chrome和Firefox中,按住Command键(即Meta键)时,Shift键似乎并不影响KeyboardEvent.key属性的大写。这可以通过在event.key事件中记录keydown来测试:

document.addEventListener("keydown", event => console.log(event.key));

按住Command-Shift-Z会产生"z"。按住Control-Shift-Z之类的其他修饰符会产生预期的"Z"。在其他操作系统中,这似乎没有发生:按住Shift总是将一个字母大写。

这是预期的行为吗?如果是,背后的原因是什么?我在spec中找不到任何提及。如果不希望出现这种情况,则可能是什么原因导致这种行为?

javascript keyboard-events
1个回答
0
投票

是,这是预期的行为。

[键盘事件key属性应该是键表示的字符是字符(键盘的实际字符取决于语言环境)-或对于Meta之类的修饰键,来自标准非Unicode列表)标准中3.2 Modifier keys下列出的关键名称。

按照标准,对于Apple命令或Windows徽标键激活事件,应始终获得“ Meta”作为key值。

如果在按住meta键的同时按下了其他某个键,则另一个键的键盘事件应设置为metaKey属性。在按下meta键的同时按住Shift键也有类似的考虑-meta key事件应设置其shiftKey属性。

UIEvents specification的4.6.1节中描述了便利属性:

...:ctrlKey,shiftKey,altKey,metaKey。这些属性等效于分别将getModifierState()方法与Control,Shift,Alt或Meta一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.