2012-08-05 148 views
16

在Mac浏览器中,当metakey关闭时,javascript不会接收大多数键的键入事件(其他键修饰键似乎是一个例外)。使用此的jsfiddle证明(重点结果区域,并尝试像CMD + X,则X将不会收到keyup事件): http://jsfiddle.net/mUEaV/为什么在Mac浏览器中按下metaKey时Javascript会丢失keyUp事件?

我在为Chrome,FF,Safari和Opera稳定版本转载此。 Windows 7中的控制键似乎也没有发生同样的情况。

操作系统是否劫持了keyup事件?这似乎特别奇怪,因为使用metakey的命令(例如保存,查找,剪切,复制等等)都在keydown上激活,而不是在keyup上激活,并且可以被javascript劫持得很好。

+0

对不起,要问一个明显愚蠢的问题,但作为一个非Mac用户:哪一个是meta key? (我有一个Mac键盘,但它连接到一台Ubuntu PC上。) – 2012-08-05 21:01:55

+0

@DavidThomas我用另一种方式使用键盘:一个带有mac的windows键盘:)对我来说,meta键是windows键,**默认设置**。 (在Mac上,你可以改变它,*以保持一致!*:O) – tomsmeding 2012-08-23 13:16:12

+1

这是OS X的预期行为: http://stackoverflow.com/questions/4001565/missing-keyup-events-on - 有意义的键组合 - 例如,直到开始选择 – NateS 2013-03-08 12:38:41

回答

2

当您按下这些键时,浏览器窗口是否保持焦点?在Windows中,按windows+RCTRL+ESC以及类似的组合键会使浏览器失去焦点并导致错过的事件,您可能会得到类似的结果。

+0

浏览器保持焦点。没有关于失去焦点的视觉指示,您可以继续按键并捕捉其他关键事件。我注意到,在Windows中进行测试时,它也是有意义的,因为Windows键预计会导致操作系统特定的行为,并且它不会被浏览器afaik劫持。 – anonymouse 2012-08-06 15:18:17

相关问题