Оброботка одновременного нажатия 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, время: 05:11. |