Как я могу захватить событие щелчка правой кнопкой мыши в JavaScript?

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

Как это делается?

Ответ 1

Используйте событие oncontextmenu.

Вот пример:

<div oncontextmenu="javascript:alert('success!');return false;">
    Lorem Ipsum
</div>

И используя прослушиватели событий:

el.addEventListener('contextmenu', function(ev) {
    ev.preventDefault();
    alert('success!');
    return false;
}, false);

Не забудьте вернуть false, иначе стандартное контекстное меню все равно появится.

Если вы собираетесь использовать написанную вами функцию, а не javascript:alert("Success!"), не забудьте вернуть false в BOTH функцию AND и атрибут oncontextmenu.

Ответ 2

Я думаю, что вы ищете что-то вроде этого:

   function rightclick() {
    var rightclick;
    var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert(rightclick); // true or false, you can trap right click here by if comparison
}

(http://www.quirksmode.org/js/events_properties.html)

И затем используйте onmousedown даже с помощью функции rightclick() (если вы хотите использовать ее глобально на всей странице, вы можете сделать это <body onmousedown=rightclick(); >