Comment capturer la Cmdclé d' un Mac via JavaScript?
javascript
dom-events
DonnéesGreed
la source
la source
Réponses:
EDIT: À partir de 2019,
e.metaKey
est pris en charge sur tous les principaux navigateurs selon le MDN .Notez que sous Windows, bien que la ⊞ Windowsclé soit considérée comme la clé «méta», elle ne sera pas capturée par les navigateurs en tant que telle.
C'est uniquement pour la touche de commande sur MacOS / claviers.
Contrairement à Shift/ Alt/ Ctrl, la Cmdtouche («Apple») n'est pas considérée comme une touche de modification - à la place, vous devez écouter sur
keydown
/keyup
et enregistrer lorsqu'une touche est enfoncée puis enfoncée en fonction deevent.keyCode
.Malheureusement, ces codes clés dépendent du navigateur:
224
17
91
(Commande gauche) ou93
(Commande droite)Vous voudrez peut-être lire l'article JavaScript Madness: Keyboard Events , dont j'ai appris cette connaissance.
la source
keydown
événements, nonkeyup
.Vous pouvez également consulter l'
event.metaKey
attribut sur l'événement si vous travaillez avec des événements keydown. A travaillé à merveille pour moi! Vous pouvez l'essayer ici .la source
.metaKey
fonctionne en effet dans les derniers Firefox, Safari et Opera. Dans Chrome, se.metaKey
déclenche sur le contrôle (pas sur la commande).keydown
mais PAS pourkeyup
oukeypress
.J'ai trouvé que vous pouvez détecter la touche de commande dans la dernière version de Safari (7.0: 9537.71) si elle est enfoncée en conjonction avec une autre touche. Par exemple, si vous souhaitez détecter ⌘ + x :, vous pouvez détecter la touche x ET vérifier si event.metaKey est défini sur true. Par exemple:
Lorsque vous appuyez sur x seul, cela produira
120, false
. Lorsque vous appuyez sur ⌘ + x, il sortira120, true
Cela ne semble fonctionner que dans Safari - pas dans Chrome
la source
Sur la base des données d'Ilya, j'ai écrit une bibliothèque Vanilla JS pour prendre en charge les touches de modification sur Mac: https://github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
Utilisez-le simplement comme ceci, par exemple:
Testé sur Chrome, Safari, Firefox, Opera sur Mac. Veuillez vérifier si cela fonctionne pour vous.
la source
Pour les personnes utilisant jQuery, il existe un excellent plugin pour gérer les événements clés:
Raccourcis clavier jQuery sur GitHub
Pour capturer ⌘+ Set Ctrl+ Sj'utilise ceci:
la source
Voici comment je l'ai fait dans AngularJS
la source
si vous utilisez Vuejs, faites-le simplement avec le plugin vue-shortkey, tout sera simple
https://www.npmjs.com/package/vue-shortkey
la source