jQuery Event Keypress:どのキーが押されましたか? および jqueryでクリックイベント中にキーが押されたかどうかを確認するにはどうすればよいですか?
しかし、私の質問は、すべてのブラウザで同じキーイベントを取得できるかどうかです。現在、Firefoxは command ボタン(Mac)224 Chromeで、Safariは値91を指定します。ユーザーが使用しているブラウザを確認し、そのキーを押したり、すべてのブラウザで1つのキーコードを取得できるようにする方法?メモで値を取得しています:
var code = (evt.keyCode ? evt.keyCode : evt.which);
プラグインについて知る必要があるという理由だけで、可能であればプラグインを使用したくない command/ctrl (Windowsシステム)キーが押されました。
jQueryはすでにそれを処理しています。コントロールが押されたかどうかを確認するには、次を使用する必要があります。
$(window).keydown(function (e){
if (e.ctrlKey) alert("control");
});
修飾キーのリスト:
e.ctrlKey
e.altKey
e.shiftKey
そして、ファッジが示唆したように:
e.metaKey
正確な瞬間に興味がなければ Command キーが押された場合、別のキーが押されたときに押されたかどうかだけで、イベントのmetaKey
プロパティを使用できます。
それ以外の場合、keydown
およびkeyup
イベントの場合、必要なプロパティはすべてのブラウザーでkeyCode
です。残念ながら、 Command キーは、すべてのブラウザで同じキーコードを持っているわけではなく、左右 CommandsはWebKitで異なる値を持っています(それぞれ91と93)。何らかのブラウザスニッフィングなしでこれらのキーを検出する簡単な方法はありませんが、あるかもしれません。 which
プロパティは間違いなく役に立ちません。
詳細については、 http://unixpapa.com/js/key.html にすべての主要なブラウザーでの主要なイベント処理の包括的なカバレッジがあります。
では、この実行可能なコードスニペットで実際に試してみてください。
$(window).on('keypress', function(event) {
$("body").append($("<p>").text(
"ctrlKey " + event.ctrlKey
+ "; altKey " + event.altKey
+ "; metaKey " + event.metaKey
+ "; shiftKey " + event.shiftKey
+ "; isCommandPressed " + isCommandPressed(event)
));
});
function isCommandPressed(event) {
return event.metaKey && ! event.ctrlKey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Focus on this select control and try pressing keys:</p>
<p><select><option>Test</option></select></p>