Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2015, 22:13
Новичок на форуме
Отправить личное сообщение для NullNull Посмотреть профиль Найти все сообщения от NullNull
 
Регистрация: 08.09.2015
Сообщений: 5

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

Не могу переделать.
Подскажите, пожалуйста , как это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2015, 23:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,801

NullNull,
переписать строки 4 и 15 с on на addEventListener
и запустить runOnKeys дважды с нужными параметрами
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2015, 23:55
Новичок на форуме
Отправить личное сообщение для NullNull Посмотреть профиль Найти все сообщения от NullNull
 
Регистрация: 08.09.2015
Сообщений: 5

Вот переделал:

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) 
      );



теперь вообще не работает
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2015, 00:16
Новичок на форуме
Отправить личное сообщение для NullNull Посмотреть профиль Найти все сообщения от NullNull
 
Регистрация: 08.09.2015
Сообщений: 5

Исправил ошибку: поменял document на window - работает.
Спасибо огромное за подсказку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка нажатия двух клавиш 12345678 Events/DOM/Window 1 15.01.2013 13:41
Можно ли посылать нажатия клавиш контролу? Vornic Элементы интерфейса 1 21.12.2012 05:54
идентификация одновременного нажатия 2-х и более клавиш Раед Events/DOM/Window 3 18.03.2012 11:37
Отслеживание нажатия комбинации клавиш MCTrane Общие вопросы Javascript 10 06.02.2011 06:04
эмуляция нажатия клавиш jetli13 Общие вопросы Javascript 4 24.09.2010 11:08