Javascript jQuery未检测到keyup上的修饰符

Javascript jQuery未检测到keyup上的修饰符,javascript,jquery,keypress,meta-key,Javascript,Jquery,Keypress,Meta Key,当我运行以下代码并在Mac上按command键(使用Chrome)时,metaKey设置为keydown,而不是keyup。我做错什么了吗?我只是想跟踪被按下的元键,以便在JavaScript中使用它-如果有更好的方法,请让我知道:-) 以下是相关键的控制台输出 // Pressing cmd keydown 91 meta pressed keyup 91 // Pressing control keydown 17 meta pressed keyup 17 // Pressing

当我运行以下代码并在Mac上按command键(使用Chrome)时,metaKey设置为keydown,而不是keyup。我做错什么了吗?我只是想跟踪被按下的元键,以便在JavaScript中使用它-如果有更好的方法,请让我知道:-)

以下是相关键的控制台输出

// Pressing cmd
keydown 91
meta pressed
keyup 91

// Pressing control 
keydown 17
meta pressed 
keyup 17

// Pressing non-meta like spacebar
keydown 32
keyup 32

您将无法从密钥更新中检索该信息。我建议使用这个
(e.keyCode==17 | | e.keyCode==91)
作为测试用例(分别是CTRL和META)

我现在明白了,我误解了jQuery如何处理修改键。感谢@adeneo的提示,让我思考正确


此外,如果在按住元字符的同时按下键,例如按下M-x,jQuery不会发送“x”的键,直到释放“M”为止。因此,您不必担心“元向下,x向下,x向上,元向上”之类的事情发生

我正在使用React并注意到相同的问题
e.metaKey
可用于keydown,但不能用于keydup
e.keyCode
两者都是93。但我不确定我是否得到了它,这不正是预期的吗,当按钮被释放时会触发keyup事件,因此e.metaKey在该点将为false,即使keyup事件使用正确的keyCode触发?这些keyCode依赖于浏览器。@Damien。如果向下滚动,您将看到CTRL键在不同浏览器中是一致的。Opera不正确支持Windows Meta,但其浏览器使用份额无论如何都是可以忽略的(也不是OP的用例)。MacOS上的每个浏览器的命令键代码都不同,Safari使用2个代码。看,这并不能真正回答问题。如果您有不同的问题,可以单击以提问。一旦你有足够的时间,你也可以吸引更多的注意力-
// Pressing cmd
keydown 91
meta pressed
keyup 91

// Pressing control 
keydown 17
meta pressed 
keyup 17

// Pressing non-meta like spacebar
keydown 32
keyup 32