codice chiave jQuery per la chiave di comando

Ho letto jQuery Event Keypress: quale tasto è stato premuto? e Come posso controllare se il tasto viene premuto durante l’evento click con jquery?

Comunque la mia domanda è se riesci a ottenere lo stesso evento chiave per tutti i browser? Attualmente so che Firefox dà al pulsante di comando (Mac) il codice 224 mentre Chrome e Safari gli danno il valore 91. È l’approccio migliore per controllare semplicemente quale browser sta usando l’utente e basare il tasto premuto su quello o c’è un modo in modo che io possa ottenere 1 codice chiave su tutti i browser? Nota Sto ottenendo il valore con:

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

Mi piacerebbe non usare un plugin, se ansible, solo perché ho solo bisogno di sapere il tasto comando / ctrl (windows system) premuto.

jQuery lo gestisce già. Per verificare se il controllo è stato premuto, è necessario utilizzare:

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

L’elenco dei tasti modificatori:

 e.ctrlKey e.altKey e.shiftKey 

E come suggerito fudgey:

 e.metaKey 

Potrebbe lavorare su MAC. Alcuni altri modi anche qui .

Se non ti interessa il momento esatto in cui viene premuto il tasto Comando , solo se viene premuto quando viene premuto un altro tasto, puoi utilizzare la proprietà metaKey dell’evento.

In caso contrario, per eventi keydown e keyup , la proprietà di cui hai bisogno è keyCode in tutti i browser. Sfortunatamente, il tasto Comando non ha lo stesso codice chiave in tutti i browser, e i Comandi sinistro e destro hanno valori diversi in WebKit (91 e 93 rispettivamente). Non riesco a vedere un modo semplice per rilevare queste chiavi senza alcun tipo di annusata del browser, ma potrebbe essercene una. La proprietà which sicuramente non ti aiuterà.

Per ulteriori informazioni, http://unixpapa.com/js/key.html offre una copertura completa della gestione degli eventi chiave in tutti i principali browser.

Ecco qua, prova questo live in questo frammento di codice eseguibile:

 $(window).on('keypress', function(event) { $("body").append($("

").text( "ctrlKey " + event.ctrlKey + "; altKey " + event.altKey + "; metaKey " + event.metaKey + "; shiftKey " + event.shiftKey + "; isCommandPressed " + isCommandPressed(event) )); }); function isCommandPressed(event) { return event.metaKey && ! event.ctrlKey; }

  

Focus on this select control and try pressing keys: