자바 스크립트 이벤트를 마우스 오른쪽 버튼으로 클릭합니까? 그렇다면 어떻게 사용합니까?
답변
다른 사람들이 언급했듯이 오른쪽 마우스 버튼은 일반적인 마우스 이벤트 (mousedown, mouseup, click)를 통해 감지 할 수 있습니다 . 그러나 오른쪽 클릭 메뉴가 표시 될 때 발사 이벤트를 찾으려면 잘못된 위치를 찾고있는 것입니다. 오른쪽 클릭 / 컨텍스트 메뉴는 키보드 (Windows 및 일부 Linux의 경우 Shift + F10 또는 컨텍스트 메뉴 키)를 통해 액세스 할 수도 있습니다. 이 상황에서 찾고있는 이벤트는 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!");
}
답변
다음 jQuery 코드를 살펴보십시오.
$("#myId").mousedown(function(ev){
if(ev.which == 3)
{
alert("Right mouse button clicked on element with id myId");
}
});
의 가치 which
는 다음과 같습니다.
- 왼쪽 버튼의 경우 1
- 중간 버튼의 경우 2
- 오른쪽 버튼은 3
답변
다음과 같은 이벤트를 사용할 수 있습니다 window.oncontextmenu
.
window.oncontextmenu = function () {
alert('Right Click')
}
<h1>Please Right Click here!</h1>
답변
w3c는 오른쪽 클릭이 클릭 이벤트에 의해 감지 될 수 있다고 말하지만 onClick은 일반적인 브라우저에서 오른쪽 클릭을 통해 트리거되지 않습니다.
실제로 마우스 오른쪽 버튼을 클릭하면 onMouseDown onMouseUp 및 onContextMenu 만 트리거됩니다.
따라서 “onContextMenu”를 오른쪽 클릭 이벤트로 간주 할 수 있습니다. HTML5.0 표준입니다.
답변
마우스 오른쪽 버튼 클릭을 감지하려면 MouseEvent.which
속성이 표준이 아니므로 브라우저간에 비 호환성이 있으므로 속성을 사용하면 안됩니다 . ( MDN 참조 ) 대신 사용해야 MouseEvent.button
합니다. 주어진 버튼을 나타내는 숫자를 반환합니다.
0
: 메인 버튼, 보통 왼쪽 버튼 또는 초기화되지 않은 상태1
: 보조 버튼 누름, 일반적으로 휠 버튼 또는 중간 버튼 (있는 경우)2
: 보조 버튼을 눌렀으며 일반적으로 오른쪽 버튼3
: 네 번째 버튼, 일반적으로 브라우저 뒤로 버튼4
: 다섯 번째 버튼, 일반적으로 브라우저 전달 버튼
MouseEvent.button
표준 마우스보다 더 많은 입력 유형을 처리합니다.
버튼은 표준 “왼쪽에서 오른쪽”레이아웃과 다르게 구성 될 수 있습니다. 왼손잡이 용으로 구성된 마우스는 버튼 동작이 반대로 될 수 있습니다. 일부 포인팅 장치에는 하나의 버튼 만 있고 키보드, 기타 입력 메커니즘을 사용하여 주, 보조, 보조 등을 나타냅니다. 다른 포인팅 장치에는 다른 기능과 버튼 값에 매핑 된 많은 버튼이있을 수 있습니다.
참고:
답변
아니요, “onmousedown”이벤트에서 어떤 마우스 버튼이 사용되었는지 감지 할 수 있으며 “오른쪽 클릭”인지 확인할 수 있습니다.
답변
다음 코드는 jQuery를 사용 rightclick
하여 기본 mousedown
및 이벤트를 기반으로 사용자 정의 이벤트 를 생성 mouseup
합니다. 다음 사항을 고려합니다.
- 마우스 업시 트리거
- 전에 동일한 요소에서 마우스 다운을 눌렀을 때만 트리거
- 이 코드는 특히 JFX Webview에서도 작동합니다 (
contextmenu
이벤트가 트리거되지 않기 때문에) - 키보드에서의 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>
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)