ウェブページにキーボード・ショートカットを追加するJavaScript、shortcut.js。

PC版へ 2022年04月25日

ウェブページに、JavaScriptで独自のキーボード・ショートカットを追加してみましょう。

1から自分で書くのも良いけれど、キーコードを調べたりするのが面倒くさかったりします。以下のページで配布されている shortcut.js を利用します。

Handling Keyboard Shortcuts in JavaScript

上記ページからダウンロードした shortcut.js を適当な場所に置いて、ショートカットを追加したいページに読み込みます。

<script src="設置したパス/shortcut.js"></script>

で、ショートカットを追加するには、関数 shortcut.add を呼ぶだけです。shortcut.add() の引数は3つ。

shortcut.add( shortcut_combination , callback , opt);

引数はそれぞれ…

例として、「テキストエリア(id="test-area")がアクティブのとき、Ctrl + A を押すと、カーソル位置に "ショートカットa" というテキストを挿入し、Ctrl + B を押すと "ショートカットb" を挿入する」というのを書いてみます。

<textarea id="test-area" style="width:250px;height:200px;"></textarea>

<script src="設置したパス/shortcut.js"></script>
<script>
var opt = { 'target' : 'test-area' } ;//オプションを指定して…

shortcut.add( "Ctrl+A" , insert_text , opt ) ; //Ctrl + A にショートカットを追加
shortcut.add( "Ctrl+B" , insert_text , opt ) ; //Ctrl + B にショートカットを追加

//コールバック関数 insert_text。
//引数はイベントオブジェクト。
function insert_text( evt ){
    var key = evt.key ; //イベントからキーを取得
    var target = evt.target ; //イベントが生じた要素(id="test-area")
    var str = 'ショートカット' + key ; //挿入するテキスト
    var cursor = target.selectionStart ; //現在のカーソル位置
    target.value = target.value.substr( 0 , cursor ) + str + target.value.substr( cursor ) ; //テキストを挿入
}

</script>

実際に動作確認。下のテキストエリアをアクティブにしたら、Ctrl+A または Ctrl+B を押してみてください。

上手くいきました。ね?

オプションのパラメータ "propagate" を true に指定すると、ここで設定したショートカットを実行した後に、ブラウザ自体で設定されているショートカットが(もし同じキーバインドのショートカットがあれば)実行されてしまいます。

例えば Ctrl+A だったら全選択、Ctrl+Bだったらブックマーク、などなど。

逆に "propagage" を false にすると、ブラウザのショートカットが実行されません。上の例では、テキストエリアがアクティブのときには「Ctrl + A で全選択」という操作ができなくなります。

ということで。

関連記事

コメント

現在、コメント機能は停止しています。