Как определить Command-Shift-Click для OS X в javascript?

Обычно эта комбинация открывает ссылку как новую вкладку в Chrome, Firefox и Safari для Mac. Есть ли способ обнаружить это? Я знаю о jquery event.which, но он дает значение 1, которое неотличимо от простого щелчка левой кнопкой мыши.

Вариант использования — pushstate Backbone HTML5, где я хочу прикрепить обработчик событий 'click', который не запускает загрузку страницы для обычной навигации, но при этом позволяет пользователям открывать ссылку в новой вкладке с помощью ⌘-⇧-щелчка.


person sye    schedule 06.06.2012    source источник


Ответы (1)


Вы можете использовать свойства metaKey и shiftKey события:

$(window).click(function(e) {
  if(e.metaKey && e.shiftKey) {
    console.log("Command+Shift+Click");
  } else {
    console.log("Other click");
  }
});

поэтому, если, например, вы выполняете маршрутизацию #! вместо того, чтобы фактически следовать URL-адресам, и хотите, чтобы команда или команда + Shift выполняли нормальное поведение (открывались в новой вкладке), у вас будет что-то вроде

function followLink(e) {
  if(!e.metaKey) e.preventDefault();
  yourApp.navigate('/link');
}
person Alex Churchill    schedule 06.06.2012
comment
Для pushState, чтобы это также работало в Windows, вам нужно проверить e.ctrlKey. chrome.blogspot.com/2009/08/ tip-opening-links-in-new-tabs.html - person sye; 06.06.2012