将函数绑定到javascript中使用一个函数

时间:2016-02-01 15:51:20

标签: javascript onkeydown

正在浏览一些关键事件javascript libarys并发现我认为非常酷的this one。基本上,使用它你可以做类似这样的事情:

function bindFunctionToKeydownEvents(keys, callback) {
  // code here
}

其中键可能只是一个键:"k", "(", or "=", 关键组合:"ctrl+k" or "shift+ctrl+k", 或者一个序列(然后在3秒内输入一个字母g,输入另一个字母,如gmail风格)g o来做某事
然后回调将是一个函数。function(){alert("hi");foo();bar();}
有没有办法在一个javascript函数中执行此操作,因为我不想添加该库? 我真的希望它能够支持多个回调,例如,能够运行: bindFunctionToKeydownEvents("ctrl+k", function(){alert("hi")});
然后呢 bindFunctionToKeydownEvents("ctrl+shift+k", function(){alert("hello")});
当按下ctrl + shift + k时,让它做两件事 我是javascript和keydown事件的新手,所以如果你能解释那些很棒的代码。
即使只是想让我告诉我如何处理我所要求的语法的一部分,那也没关系。

1 个答案:

答案 0 :(得分:0)

您可以使用按键执行此操作,因为只有在按键时,您才能通过字符更改keyCode:



var keypress = {};
function bindFunctionToKeypressEvents(keys, callback) {
  keys = keys.toLowerCase();
  keypress[keys] = keypress[keys] || [];
  keypress[keys].push(callback);
}
document.addEventListener('keypress', function(e) {
  var str = '';
  if (e.shiftKey) {
    str += 'shift+';
  }
  if (e.ctrlKey) {
    str += 'ctrl+';
  }
  str += String.fromCharCode(e.charCode).toLowerCase();
  if (keypress[str] && keypress[str].length) {
    keypress[str].forEach(function(fn) {
      fn();
    });
  }
}, true);

bindFunctionToKeypressEvents('shift+l', function() {
  alert('shift+l');
});




只有当班次是第一个时,它才会起作用。