正在浏览一些关键事件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事件的新手,所以如果你能解释那些很棒的代码。
即使只是想让我告诉我如何处理我所要求的语法的一部分,那也没关系。
答案 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');
});

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