キーボードショートカットを実装していて、関数を連想配列に保存して管理したくなった。
#ダメな例
連想配列にそのまま関数を保存すると、読み込み時に実行されてしまう。
dame.js
const sc = {
s:save(),
l:load()
};
sc['s']; //save()を呼び出したいけど失敗
#成功例
ok.js
const sc = {
s:function(){save()},
l:function(){load()}
};
sc['s'](); //save()が実行される
#ショートカット実装時のtips
shortcut.js
$(function(){
const sc = {
s:function(){save()},
l:function(){load()}
};
$(document).on('keydown',function(e){
if(e.ctrlKey){ //コントロールキー押下判断
var key= e.key;
shortcut(e,key);
};
});
function shortcut(e,key){
if($.isFunction(sc[key])){ //ショートカットが登録されていれば
sc[key](); //ショートカットを実行して
e.preventDefault(); //ブラウザ標準のショートカットをキャンセル
};
};
});
#ショートカット実装のための参考リンク