script aside all javascript jquery command keydown onkeyup

javascript - aside - Código de clave de jQuery para clave de comando



jquery replace html (3)

Aquí tienes, prueba esto en vivo en este fragmento de código ejecutable:

$(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>

He leído jQuery Event Keypress: ¿Qué tecla se presionó? y ¿Cómo puedo verificar si se presiona la tecla durante un evento de clic con jquery?

Sin embargo, mi pregunta es si puede obtener el mismo evento clave para todos los navegadores. Actualmente, sé que Firefox le da al botón de comando (Mac) el código 224, mientras que Chrome y Safari le dan el valor 91. Es el mejor método para simplemente verificar qué navegador está usando el usuario y basar la tecla presionada en eso ¿Para que pueda obtener 1 código clave en todos los navegadores? Tenga en cuenta que estoy obteniendo el valor con el:

var code = (evt.keyCode ? evt.keyCode : evt.which);

Me encantaría no usar un complemento si es posible solo porque solo necesito saber acerca de la tecla comando / ctrl (sistema Windows) presionada.


Si no está interesado en el momento exacto en que se presiona la tecla Comando , solo si se presiona cuando se presiona otra tecla, puede usar la propiedad metaKey del evento.

De lo contrario, para los eventos keydown y keyup , la propiedad que necesita es keyCode en todos los navegadores. Desafortunadamente, la tecla Comando no tiene el mismo código clave en todos los navegadores, y los Comandos izquierdo y derecho tienen diferentes valores en WebKit (91 y 93 respectivamente). No puedo ver una forma fácil de detectar estas claves sin algún tipo de rastreo del navegador, pero puede haber una. La propiedad which definitivamente no te ayudará.

Para obtener más información, unixpapa.com/js/key.html tiene una cobertura completa del manejo de eventos clave en todos los principales navegadores.


jQuery ya maneja eso. Para verificar si se presionó el control debes usar:

$(window).keydown(function (e){ if (e.ctrlKey) alert("control"); });

La lista de teclas modificadoras:

e.ctrlKey e.altKey e.shiftKey

Y como sugirió Fudgey:

e.metaKey

Podría funcionar en MAC. Algunas otras formas aquí también .