jsでショートカット
ショートカットといえば
ctrl + a
ctrl + c
ctrl + v
などをよく使うのではないでしょうか。
今回はそのショートカットをJavascriptで実装する方法を紹介します。
目次
使ってみよう
実はこのサイトにもショートカットが実装されています。
qを押すと、背景が赤になります。
もう一回同じことをすると戻ります。
ということでやり方を説明していきます。
やり方
まずはさっきの背景が赤くなるコードを見てみましょう。
const body = document.querySelector('body');
window.addEventListener('keydown', function (event) {
if(event.key === 'q'){
changeBodyColor();
}
});
function changeBodyColor() {
if(body.style.background == 'red'){
body.style.background = '#f5f5f5';
} else {
body.style.background = 'red';
}
}
関数changeBodyColorは背景色を赤かグレーに変更する関数です。
3行目にあるkeydownというイベントは、キーが押された時に発生するイベントで、その押されたキーが
q場合にchangeBodyColor関数を呼び出しています。
event.code
さっきは
event.key == 'q'
で押されたキーを判定していましたが、event.codeを使う方法もあるのでみてみましょう。
if(event.code === 'KeyQ'){
//処理
}
event.keyCodeを使う方法もありますが、keyCodeは非推奨となっているのでおすすめはしません。
キーの値が知りたいときはこちらの記事をご覧ください。
例えばShiftキーを押すとevent.keyの値はShiftになるので、このように書いてください。
//event.key
if(event.key === 'Shift'){
//処理
}
//event.code
if(event.code === 'ShiftLeft' || event.code === 'ShiftRight'){
//処理
}
Shiftキーは2つあるので注意してください。
また、control,shift,altキーは省略することができます。
if ((event.ctrlKey || event.key === 'Meta') && event.shiftKey && event.altKey){
//処理
}
Macではevent.ctrlKeyを使用すると、^controlキーが認識されます。
WindowsのCtrlと言ったらMacユーザーは⌘commandキーを使うと思いますので、keyかcodeで判定するようにした方がいいでしょう。
あとmacの⌥optionキーはevent.altKeyで判定できるようですね。