2012-08-05 146 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

相關問題