2012-08-05 17 views
16

Macのブラウザでは、metakeyがダウンしているときにjavascriptはほとんどのキーのkeyupイベントを受信しません(他の修飾キーは例外のようです)。証明するために、このjsfiddleを使用します(結果領域を集中し、CMD + Xのような何かをしようと、xはkeyUpイベントを受信しません): http://jsfiddle.net/mUEaV/MacのブラウザでmetaKeyが押されたときにJavascriptがkeyUpイベントをドロップするのはなぜですか?

私はクロム、FF、SafariやOperaのための安定したリリースでこれを再現しました。 Windows 7のコントロールキーでも同じことは起こっていないようです。

OSがキーアップイベントをハイジャックしていますか?これは、save、find、cut、copyなどのmetakeyを使用するコマンドがキーアップではなくkeydownでアクティブになり、javascriptでハイジャックされる可能性があるため、特に奇妙に思えます。

+0

明らかにばかげた質問を申し訳ありませんが、Mac以外のユーザーとして:どちらがメタキーですか? (私はMacキーボードを持っていますが、それはUbuntu PCに接続されています) –

+0

@DavidThomas私はキーボードを別の方法で使います:MacのWindowsキーボード:私の場合、メタキーはWindowsのキーです**デフォルトの設定**。 (Macでは、変更することができます*は、一貫性を保つために*:O) – tomsmeding

+1

これはOS Xの予想される動作です: http://stackoverflow.com/questions/4001565/missing-keyup-events-on - 重要なキー組み合わせ - 例 - 選択 - 開始まで – NateS

答えて

2

これらのキーを押したときにブラウザウィンドウがフォーカスを維持していますか?ウィンドウでは、windows+RまたはCTRL+ESCなどのキーの組み合わせを使用してブラウザのフォーカスがずれてしまい、イベントが発生しなくなるなどの類似の結果が得られます。

+0

ブラウザはフォーカスを保持しています。フォーカスが失われていることを視覚的に示すことはなく、キーを押し続けたり、他のキーイベントをキャプチャしたりすることができます。私は、Windowsでのテスト中にも、WindowsキーがOS固有の動作を引き起こすことが予想され、ブラウザafaikによってハイジャックされることはないので、意味があることに気付きました。 – anonymouse