захватить ctr-z (отменить) и ctr-y (повторить) с помощью javascript и выполнить пользовательскую функцию - PullRequest
2 голосов
/ 30 июня 2011

Я написал своеобразное приложение для работы с электронными таблицами для определенной цели, и наряду с этим я написал свои собственные функции отмены и возврата.Когда пользователь нажимает ctr-z или ctr-y, отменяет или восстанавливает последние изменения в текстовых полях.Являются ли они способом использования JavaScript для эффективного перехвата событий нажатия клавиш ctr-z и ctr-y, которые происходят в любом месте на странице, и побуждают их запускать мои собственные функцииИли как минимум, чтобы отключить стандартную функциональность браузера.

Мне нужно, чтобы это работало в последних версиях Firefox и Chrome только для Windows.

Ответы [ 2 ]

2 голосов
/ 16 мая 2013

Использование jQuery:

$(document).keydown(function (keyEvent) {
   var keyCode = keyEvent.keyCode;
   if (keyEvent.metaKey === true || keyEvent.ctrlKey === true) {
      if (keyCode === 89) {
         //fire your custom redo logic
         keyEvent.preventDefault();
         return false;
      } 
      else if (keyCode === 90) {
         //special case (CTRL-SHIFT-Z) does a redo (on a mac for example)
         if (keyEvent.shiftKey === true) {
            //fire your custom redo logic
         }
         else {
            //fire your custom undo logic
         }
         keyEvent.preventDefault();
         return false;
      }
   } 
});

Это должно обрабатывать все события на основе клавиатуры. Он не будет обрабатывать то, что происходит, если пользователь нажимает кнопку отмены в строке меню или щелкает правой кнопкой мыши и выбирает отмену.

0 голосов
/ 30 июня 2011

Вы можете разместить на своей странице скрытую текстовую область, привязать событие мыши onclick к функции, которая установит фокус на текстовую область, привязать события клавиатуры этой текстовой области, и если событие является keydown, а клавишей является z или y, а модификатором является Ctrl- затем вызовите ваше действие «повторить / отменить».

...