Оброботка одновременного нажатия 2-х клавиш
Здравствуйте. Столкнулся с проблемой обработки нажатия 2-х клавиш . Если по 1-ой, то проблем конечно нет , а вот с 2-мя уже похуже обстоят дела.
Нашел пример, вроде разобрался. Получилось что-то такое:
function runOnKeys(func) {
var codes = [].slice.call(arguments, 1);
var pressed = {};
document.onkeydown = function(e) {
e = e || window.event;
pressed[e.keyCode] = true;
for (var i = 0; i < codes.length; i++) { // проверить, все ли клавиши нажаты
if (!pressed[codes[i]]) {
return;
}
}
pressed = {};
func();
};
document.onkeyup = function(e) {
e = e || window.event;
delete pressed[e.keyCode];
};
}
runOnKeys(
function() {
var l1 = document.getElementById('lay1');
l1.style.visibility='visible';
},
"1".charCodeAt(0),
"L".charCodeAt(0)
);
Но это работает, только при определенных значениях клавиш,например, 1 и L . А нужно, чтобы при ,например, 1 и L - f1() , при 1 и M - f2(). Не могу переделать. Подскажите, пожалуйста , как это сделать? |
NullNull,
переписать строки 4 и 15 с on на addEventListener и запустить runOnKeys дважды с нужными параметрами |
Вот переделал:
function runOnKeys(func) {
var codes = [].slice.call(arguments, 1);
var pressed = {};
document.addEventListener("keydown",function(e) {
e = e || window.event;
pressed[e.keyCode] = true;
for (var i = 0; i < codes.length; i++) { // проверить, все ли клавиши нажаты
if (!pressed[codes[i]]) {
return;
}
}
pressed = {};
func();
},false);
document.addEventListener("keyup",function(e) {
e = e || window.event;
delete pressed[e.keyCode];
},false);
}
runOnKeys(
function() {
var l1 = document.getElementById('lay1');
l1.style.visibility='visible';
},
"1".charCodeAt(0),
"L".charCodeAt(0)
);
теперь вообще не работает |
Исправил ошибку: поменял document на window - работает.
Спасибо огромное за подсказку. |
| Часовой пояс GMT +3, время: 19:34. |