キーイベント追加
var KeyBind = {}; KeyBind.add = function(elm, key, func) { var keycode; var m = null; var sp = { "Up" : 38, "Down" : 40, "Right" : 39, "Left" : 37 } if(key) { key.replace(/^(([CSA])-)?(\w+)$/, function($0, $1, $2, $3) { if($2) { m = ({ C : "ctrl", S : "shift", A : "alt" })[$2] + "Key"; } keycode = sp[$3] || $3.toUpperCase().charCodeAt(0); }); elm.addEventListener('keydown', function(evt) { if(m) { if(evt[m] && evt.keyCode == keycode) { func(evt); } } else { if(evt.keyCode == keycode) { func(evt); } } }, false); } else { elm.addEventListener('keydown', func, false); } }
使いかた
KeyBind.add(window, "C-r", function(evt) { alert("hoge") });
説明
第一引数: 追加したい要素
第二引数: キーバインド C-: Ctrl+, S-: Shift+, A-: Alt+。ふたつ以上の組み合わせは不可。記号に対応していない。 すべてのキーにあたえたい場合 null or false
第三引数; 実行したい関数