JS: обнаружение правого клика без JQuery (встроенный) - PullRequest
5 голосов
/ 29 февраля 2012

Я вызываю функцию, которая создает таблицу с несколькими ссылками.

Я хочу проверить, была ли нажата ссылка правой или левой мышью.

Я пыталсядобавьте следующую часть к гиперссылке <a>.

onmousedown="function mouseDown(e){
switch (e.which) {
   case 1: alert('left'); break;
   case 2: alert('middle'); break;
   case 3: alert('right'); break; }
}"

Но ничего не произойдет, если я нажму на ссылку.

Ответы [ 2 ]

15 голосов
/ 29 февраля 2012

HTML:

<a href="#" onmousedown="mouseDown(event);">aaa</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​

JavaScript:

function mouseDown(e) {
  e = e || window.event;
  switch (e.which) {
    case 1: alert('left'); break;
    case 2: alert('middle'); break;
    case 3: alert('right'); break; 
  }
}​

Демоверсия .

4 голосов
/ 27 июля 2013

Вот модификация ответа xdazz, которая поддерживает браузеры, которые используют e.button, нормализует значение и сохраняет его в e.which. Добавленные строки - это то, что используется в библиотеке JQuery.

function mouseDown(e) {
  e = e || window.event;
  if ( !e.which && e.button !== undefined ) {
    e.which = ( e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) ) );
  }
  switch (e.which) {
    case 1: alert('left'); break;
    case 2: alert('middle'); break;
    case 3: alert('right'); break; 
  }
}​
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...