Jak przechwycić Cmdklucz Maca za pomocą JavaScript?
javascript
dom-events
DataGreed
źródło
źródło
Odpowiedzi:
EDYCJA: od 2019
e.metaKey
jest obsługiwana we wszystkich głównych przeglądarkach zgodnie z MDN .Zauważ, że w systemie Windows, chociaż ⊞ Windowsklucz jest uważany za klucz „meta”, nie zostanie przechwycony przez przeglądarki jako taki.
Dotyczy to tylko klawisza Command na MacOS / klawiaturach.
W przeciwieństwie do Shift/ Alt/ Ctrl, Cmdklawisz („Apple”) nie jest uważany za klawisz modyfikujący - zamiast tego należy nasłuchiwać
keydown
/keyup
i nagrywać, gdy klawisz jest naciskany, a następnie wciskanyevent.keyCode
.Niestety te kluczowe kody zależą od przeglądarki:
224
17
91
(Lewe polecenie) lub93
(Prawe polecenie)Możesz być zainteresowany przeczytaniem artykułu JavaScript Madness: Keyboard Events , z którego dowiedziałem się tej wiedzy.
źródło
keydown
wydarzeniach, a niekeyup
.Możesz również spojrzeć na
event.metaKey
atrybut w zdarzeniu, jeśli pracujesz ze zdarzeniami keydown. U mnie zadziałało cudownie! Możesz spróbować tutaj .źródło
.metaKey
rzeczywiście działa w najnowszych przeglądarkach Firefox, Safari i Opera. W przeglądarce Chrome.metaKey
uruchamia się na Control (nie na Command).keydown
ale NIE w przypadkukeyup
lubkeypress
.Odkryłem, że możesz wykryć klawisz polecenia w najnowszej wersji Safari (7.0: 9537.71), jeśli zostanie naciśnięty w połączeniu z innym klawiszem. Na przykład, jeśli chcesz wykryć ⌘ + x :, możesz wykryć klawisz x ORAZ sprawdzić, czy event.metaKey ma wartość true. Na przykład:
Po samodzielnym naciśnięciu x spowoduje to wyświetlenie
120, false
. Po naciśnięciu ⌘ + x zostanie wyświetlone120, true
Wydaje się, że działa to tylko w Safari - nie w Chrome
źródło
Bazując na danych Ilya, napisałem bibliotekę Vanilla JS do obsługi klawiszy modyfikujących na Macu: https://github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
Po prostu użyj tego w ten sposób, np:
Przetestowano w Chrome, Safari, Firefox, Opera na Macu. Sprawdź, czy to działa dla Ciebie.
źródło
Dla osób używających jQuery jest doskonała wtyczka do obsługi kluczowych zdarzeń:
Skróty klawiszowe jQuery w serwisie GitHub
Do przechwytywania ⌘+ Si Ctrl+ Sużywam tego:
źródło
Oto jak to zrobiłem w AngularJS
źródło
jeśli używasz Vuejs, po prostu zrób to za pomocą wtyczki vue-shortkey, wszystko będzie proste
https://www.npmjs.com/package/vue-shortkey
źródło