Щелкните правой кнопкой мыши событие 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!");
}
Ответ 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
обрабатывает больше типов ввода, чем обычная мышь:
Кнопки могут быть настроены иначе, чем стандартная схема "слева направо". У мыши, настроенной для использования левой рукой, действия кнопок могут быть отменены. Некоторые указательные устройства имеют только одну кнопку и используют клавиатуру или другие механизмы ввода для обозначения основного, дополнительного, вспомогательного и т.д. Другие могут иметь множество кнопок, сопоставленных с различными функциями и значениями кнопок.
Ссылка:
Ответ 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