Щелкните правой кнопкой мыши событие Javascript?

Щелкните правой кнопкой мыши событие Javascript? Если да, то как его использовать?

Ответ 1

Как уже упоминалось, правую кнопку мыши можно обнаружить с помощью обычных событий мыши (mousedown, mouseup, click). Однако, если вы ищете событие стрельбы, когда вызывается меню правой кнопки мыши, вы смотрите не в том месте. Меню правого щелчка/контекста также доступно с клавиатуры (shift + F10 или клавиша контекстного меню в Windows и некоторых Linux). В этой ситуации событие, которое вы ищете, oncontextmenu:

window.oncontextmenu = function ()
{
    showCustomMenu();
    return false;     // cancel default menu
}

Что касается самих событий мыши, браузеры устанавливают свойство объекта события, доступного из функции обработки событий:

document.body.onclick = function (e) {
    var isRightMB;
    e = e || window.event;

    if ("which" in e)  // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
        isRightMB = e.which == 3; 
    else if ("button" in e)  // IE, Opera 
        isRightMB = e.button == 2; 

    alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
} 

window.oncontextmenu - MDC

Ответ 2

посмотрите следующий код jQuery:

$("#myId").mousedown(function(ev){
      if(ev.which == 3)
      {
            alert("Right mouse button clicked on element with id myId");
      }
});

Значение which будет:

  • 1 для левой кнопки
  • 2 для средней кнопки
  • 3 для правой кнопки

Ответ 3

Вы можете использовать событие window.oncontextmenu, например:

window.oncontextmenu = function () {
  alert('Right Click')
}
<h1>Please Right Click here!</h1>

Ответ 4

Ya, хотя w3c говорит, что щелчок правой кнопкой мыши может быть обнаружен событием клика, onClick не запускается при щелчке правой кнопкой мыши в обычных браузерах.

На самом деле, щелчок правой кнопкой мыши запускается только наMouseDown onMouseUp и onContextMenu.

Таким образом, вы можете рассматривать onContextMenu как событие правого щелчка. Это стандарт HTML5.0.

Ответ 5

Нет, но вы можете определить, какая кнопка мыши использовалась в событии onmousedown... и оттуда определить, был ли это "щелчок правой кнопкой".

Ответ 6

Следующий код использует jQuery для генерации пользовательского события rightclick на основе событий mousedown и mouseup по умолчанию. Он рассматривает следующие моменты:

  • trigger on mouseup
  • запускается только при нажатии mousedown на том же элементе перед
  • этот код особенно работает в JFX Webview (поскольку там не запускается событие contextmenu)
  • он НЕ запускается, когда нажата клавиша контекстного меню на клавиатуре (например, решение с on('contextmenu', ...) делает

$(function ()
{ // global rightclick handler - trigger custom event "rightclick"
	var mouseDownElements = [];
	$(document).on('mousedown', '*', function(event)
	{
		if (event.which == 3)
		{
			mouseDownElements.push(this);
		}
	});
	$(document).on('mouseup', '*', function(event)
	{
		if (event.which == 3 && mouseDownElements.indexOf(this) >= 0)
		{
			$(this).trigger('rightclick');
		}
	});
	$(document).on('mouseup', function()
	{
		 mouseDownElements.length = 0;
	});
    // disable contextmenu
    $(document).on('contextmenu', function(event)
	{
		 event.preventDefault();
	});
});



// Usage:
$('#testButton').on('rightclick', function(event)
{
  alert('this was a rightclick');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="testButton">Rightclick me</button>

Ответ 7

Да - это!

function doSomething(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert('Rightclick: ' + rightclick); // true or false
}

Ответ 8

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

Другие связанные вопросы задавали вопрос о двойном щелчке правой кнопкой мыши, который, по-видимому, не поддерживается, за исключением ручной проверки таймера. Одна из причин, по которой вы, возможно, захотите иметь двойной щелчок правой кнопкой мыши, - это то, что вам нужно/нужно поддерживать левый вход мыши (смена кнопок). Похоже, что реализации браузеров делают много предположений о том, как мы должны использовать доступные устройства ввода.

Ответ 9

Самый простой способ получить щелчок правой кнопкой мыши - использовать

 $('classx').on('contextmenu', function (event) {

 });

Однако это не кросс-браузерное решение, браузеры ведут себя по-разному для этого события, особенно firefox и IE. Я бы рекомендовал ниже для решения кросс-браузера

$('classx').on('mousedown', function (event) {
    var keycode = ( event.keyCode ? event.keyCode : event.which );
    if (keycode === 3) {
       //your right click code goes here      
    }
});

Ответ 10

Если вы хотите обнаружить щелчок правой кнопкой мыши, не следует использовать свойство MouseEvent.which поскольку оно нестандартно и имеет большую несовместимость среди браузеров. (см. MDN). Вместо этого вы должны использовать MouseEvent.button. Возвращает число, представляющее данную кнопку:

  • 0: нажата основная кнопка, обычно левая кнопка или неинициализированное состояние
  • 1: нажата вспомогательная кнопка, обычно кнопка колеса или средняя кнопка (если имеется)
  • 2: нажата дополнительная кнопка, обычно правая кнопка
  • 3: четвертая кнопка, обычно кнопка "Назад" в браузере
  • 4: пятая кнопка, как правило, кнопка браузера вперед

MouseEvent.button обрабатывает больше типов ввода, чем обычная мышь:

Кнопки могут быть настроены иначе, чем стандартная схема "слева направо". У мыши, настроенной для использования левой рукой, действия кнопок могут быть отменены. Некоторые указательные устройства имеют только одну кнопку и используют клавиатуру или другие механизмы ввода для обозначения основного, дополнительного, вспомогательного и т.д. Другие могут иметь множество кнопок, сопоставленных с различными функциями и значениями кнопок.

Ссылка:

  1. https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which
  2. https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button

Ответ 11

Это самый простой способ запустить его, и он работает во всех браузерах, кроме веб-просмотров приложений, таких как (CefSharp Chromium и т.д.). Я надеюсь, что мой код поможет вам и удачи!

const contentToRightClick=document.querySelector("div#contentToRightClick");

//const contentToRightClick=window; //If you want to add it into the whole document

contentToRightClick.oncontextmenu=function(e){
  e=(e||window.event);
  e.preventDefault();
  console.log(e);
  
  return false; //Remove it if you want to keep the default contextmenu 
}
div#contentToRightClick{
  background-color: #eee;
  border: 1px solid rgba(0,0,0,.2);
  overflow: hidden;
  padding: 20px;
  height: 150px;
}
<div id="contentToRightClick">Right click on the box !</div>

Ответ 12

Обработать событие с помощью библиотеки jQuery

$(window).on("contextmenu", function(e)
{
   alert("Right click");
})

Ответ 13

Если вы хотите вызвать функцию при щелчке правой кнопкой мыши, мы можем использовать следующие

 <html lang="en" oncontextmenu="func(); return false;">
 </html>

<script>
function func(){
alert("Yes");
}
</script>

Ответ 14

Это работает со мной

if (evt.xa.which == 3) 
{
    alert("Right mouse clicked");
}

Ответ 15

Для обработки щелчка правой кнопкой мыши вы можете использовать событие oncontextmenu. Ниже приведен пример:

 document.body.oncontextmenu=function(event) {
     alert(" Right click! ");
 };

приведенный выше код предупреждает некоторый текст при нажатии правой кнопки мыши. Если вы не хотите, чтобы меню по умолчанию браузера отображалось, вы можете добавить    return false; В конце содержимого функции. Спасибо.

Ответ 16

Да, это событие javascript mousedown. Для этого есть jQuery plugin