Обработчики событий JavaScript или jQuery для "Ctrl" / "Shift" + щелчок левой кнопкой мыши

Можно ли обрабатывать такие события, как:

  • Ctrl + щелчок левой кнопкой мыши;
  • Shift + щелчок левой кнопкой мыши;
  • Alt + щелчок левой кнопкой мыши используя JavaScript, jQuery или другую инфраструктуру.

Если это возможно, укажите пример кода.

Ответ 1

Вы можете сделать что-то вроде этого (jQuery для обработчика кликов, но любая фреймворк работает с той частью, которая имеет значение):

$(selector).click(function(e) {
  if(e.shiftKey) {
    //Shift-Click
  }
  if(e.ctrlKey) {
    //Ctrl+Click
  }
  if(e.altKey) {
    //Alt+Click
  }
});

Просто обрабатывайте то, что вы хотите внутри if внутри обработчика кликов, как у меня выше.

Ответ 2

Если вы используете плагин JQuery под названием hotkeys, вы можете обрабатывать специальные клавиши ниже.

$(document).bind('keydown', 'Ctrl+c', fn);

Ответ 3

Совсем недавно я столкнулся с проблемой использования e.ctrlKey в том, что он не работает с MAC. В Macintosh такой же эффект достигается с помощью Command + Click.

Так как большинство ответов выше уже используют jQuery, вы можете просто использовать свойство e.metaKey, которое доступно jQuery.

например.

$(selector).click(function(e) {
  if(e.shiftKey) {
    //Shift-Click
  }
  if(e.metaKey) {
    //Ctrl+Click on Windows & Command+Click on Mac.
  }
  if(e.altKey) {
    //Alt+Click
  }
});