Bagaimana cara menangkap Cmdkunci Mac melalui JavaScript?
javascript
dom-events
DataGreed
sumber
sumber
Jawaban:
EDIT: Pada 2019,
e.metaKey
adalah didukung di semua browser utama sesuai MDN .Perhatikan bahwa pada Windows, meskipun ⊞ Windowskunci tersebut dianggap sebagai kunci "meta", itu tidak akan ditangkap oleh browser seperti itu.
Ini hanya untuk kunci perintah pada MacOS / keyboard.
Tidak seperti Shift/ Alt/ Ctrl, tombol Cmd("Apple") tidak dianggap sebagai kunci pengubah — sebaliknya, Anda harus mendengarkan pada
keydown
/keyup
dan merekam ketika tombol ditekan dan kemudian ditekan berdasarkanevent.keyCode
.Sayangnya, kode-kode kunci ini tergantung pada browser:
224
17
91
(Perintah Kiri) atau93
(Perintah Kanan)Anda mungkin tertarik membaca artikel JavaScript Madness: Keyboard Events , dari mana saya belajar pengetahuan itu.
sumber
keydown
acara, tidakkeyup
.Anda juga dapat melihat
event.metaKey
atribut pada acara tersebut jika Anda bekerja dengan acara keydown. Bekerja sangat baik untuk saya! Anda bisa mencobanya di sini .sumber
.metaKey
memang berfungsi di Firefox, Safari, dan Opera terbaru. Di Chrome,.metaKey
trigger on Control (bukan on Command).keydown
tetapi BUKAN untukkeyup
ataukeypress
.Saya menemukan bahwa Anda dapat mendeteksi kunci perintah di versi terbaru Safari (7.0: 9537.71) jika ditekan bersamaan dengan tombol lain. Misalnya, jika Anda ingin mendeteksi ⌘ + x :, Anda dapat mendeteksi tombol x DAN memeriksa apakah event.metaKey disetel ke true. Sebagai contoh:
Ketika menekan x itu sendiri, ini akan menampilkan
120, false
. Saat menekan ⌘ + x, itu akan ditampilkan120, true
Ini sepertinya hanya berfungsi di Safari - bukan Chrome
sumber
Mendasarkan pada data Ilya, saya menulis perpustakaan Vanilla JS untuk mendukung kunci pengubah pada Mac: https://github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
Gunakan saja seperti ini, misalnya:
Diuji pada Chrome, Safari, Firefox, Opera di Mac. Silakan periksa apakah itu bekerja untuk Anda.
sumber
Untuk orang yang menggunakan jQuery, ada plugin yang sangat baik untuk menangani acara utama:
tombol cepat jQuery di GitHub
Untuk menangkap ⌘+ Sdan Ctrl+ Ssaya menggunakan ini:
sumber
Inilah cara saya melakukannya di AngularJS
sumber
jika Anda menggunakan Vuejs, cukup buat dengan vue-shortkey plugin, semuanya akan sederhana
https://www.npmjs.com/package/vue-shortkey
sumber