जवाबों:
जैसा कि दूसरों ने उल्लेख किया है, सामान्य माउस घटनाओं (मूसडाउन, माउसअप, क्लिक) के माध्यम से सही माउस बटन का पता लगाया जा सकता है । हालाँकि, यदि आप राइट-क्लिक मेनू लाए जाने पर फायरिंग इवेंट की तलाश कर रहे हैं, तो आप गलत जगह देख रहे हैं। राइट-क्लिक / संदर्भ मेनू भी कीबोर्ड (विंडोज और कुछ लिनक्स पर शिफ्ट + एफ 10 या संदर्भ मेनू कुंजी) के माध्यम से सुलभ है। इस स्थिति में, आप जिस घटना को देख रहे हैं, वह है 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!");
}
(isRightMB?"was not" : "")होनी चाहिए (isRightMB?"was" : "was not")। सही ? कृपया इसकी समीक्षा करने में मदद करें।
onmousedownऔर onmouseup, लेकिन नहीं onclick। जाहिर है, क्रोम में, onclickकेवल बाएं-माउस-बटन के लिए ट्रिगर किया गया है। (और हाँ दोस्तों, मैंने कई बार यह परीक्षण किया) एक राइट-माउस-क्लिक का पता लगाने के लिए, आपको या तो गठबंधन करना होगा onmousedownऔर onmouseup, या उपयोग करना होगा oncontextmenu।
निम्नलिखित jQuery कोड पर एक नज़र है:
$("#myId").mousedown(function(ev){
if(ev.which == 3)
{
alert("Right mouse button clicked on element with id myId");
}
});
का मान whichहोगा:
.whichहै वैसा क्यों नहीं है .button? ऊ .button=> 0,1,2 ; which=> 1,2,3 । यह सिर्फ गलत है।
आप घटना का उपयोग कर सकते हैं window.oncontextmenu, उदाहरण के लिए:
window.oncontextmenu = function () {
alert('Right Click')
}
<h1>Please Right Click here!</h1>
window.oncontextmenu = function () { e.preventDefault() }काम नहीं किया।
हां, हालांकि w3c का कहना है कि क्लिक इवेंट से राइट क्लिक का पता लगाया जा सकता है, सामान्य ब्राउजर्स में राइट क्लिक के माध्यम से ऑनक्लिक को ट्रिगर नहीं किया जाता है।
वास्तव में, दायाँ क्लिक करें केवल ट्रिगर करें OnMouseDown onMouseUp और onContextMenu।
इस प्रकार, आप "onContextMenu" को राइट क्लिक ईवेंट मान सकते हैं। यह एक HTML5.0 मानक है।
यदि आप सही माउस क्लिक का पता लगाना चाहते हैं, तो आपको MouseEvent.whichसंपत्ति का उपयोग नहीं करना चाहिए क्योंकि यह गैर-मानक है और ब्राउज़रों के बीच बड़ी असंगति है। ( एमडीएन देखें ) आपको इसके बजाय उपयोग करना चाहिए MouseEvent.button। यह दिए गए बटन को दर्शाने वाला नंबर देता है:
0: मुख्य बटन दबाया जाता है, आमतौर पर बाएं बटन या अन-इनिशियल स्टेट1: सहायक बटन दबाया, आमतौर पर पहिया बटन या मध्य बटन (यदि वर्तमान में)2: द्वितीयक बटन दबाया, आमतौर पर सही बटन3: चौथा बटन, आमतौर पर ब्राउज़र बैक बटन4: पांचवां बटन, आमतौर पर ब्राउज़र फॉरवर्ड बटनMouseEvent.button केवल मानक माउस की तुलना में अधिक इनपुट प्रकारों को संभालता है:
बटन को मानक "बाएं से दाएं" लेआउट में अलग तरीके से कॉन्फ़िगर किया जा सकता है। बाएं हाथ के उपयोग के लिए कॉन्फ़िगर किया गया एक माउस बटन क्रियाओं को उलट सकता है। कुछ इंगित करने वाले उपकरणों में केवल एक बटन होता है और मुख्य, द्वितीयक, सहायक आदि को इंगित करने के लिए कीबोर्ड या अन्य इनपुट तंत्र का उपयोग किया जाता है, अन्य में विभिन्न कार्यों और बटन मूल्यों के लिए मैप किए गए कई बटन हो सकते हैं।
संदर्भ:
नहीं, लेकिन आप यह पता लगा सकते हैं कि "ऑनमॉसडाउन" इवेंट में किस माउस बटन का उपयोग किया गया था ... और वहां से यह निर्धारित किया जाता है कि क्या यह "राइट-क्लिक" था।
onmousedown, onmouseupऔर onclick। यदि आप राइट-क्लिक मेनू को ओवरराइड करते हुए देख रहे हैं, हालाँकि, ये ईवेंट्स वे नहीं हैं जिनका आपको उपयोग करना चाहिए (नीचे मेरा उत्तर देखें)।
rightclickडिफ़ॉल्ट mousedownऔर mouseupघटनाओं के आधार पर एक कस्टम ईवेंट बनाने के लिए निम्न कोड jQuery का उपयोग कर रहा है । यह निम्नलिखित बातों पर विचार करता है:
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>
हाँ यही है!
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
}
elem.addEventListener("click", doSomething)
हां, oncontextmenu शायद सबसे अच्छा विकल्प है, लेकिन इस बात से अवगत रहें कि यह माउस डाउन पर ट्रिगर करता है जबकि माउस पर क्लिक से ट्रिगर होगा।
अन्य संबंधित प्रश्न डबल राइट क्लिक के बारे में पूछ रहे थे - जो स्पष्ट रूप से मैनुअल टाइमर चेकिंग को छोड़कर समर्थित नहीं है। एक कारण यह है कि आप सही डबल क्लिक करने में सक्षम होना चाहते हैं, यदि आपको बाएं हाथ के माउस इनपुट (बटन रिवर्सल) का समर्थन करना है। ब्राउज़र कार्यान्वयन बहुत सी धारणाएँ बनाते हैं कि हमें उपलब्ध इनपुट उपकरणों का उपयोग कैसे करना चाहिए।
सही तरीके से किया गया सबसे आसान तरीका उपयोग कर रहा है
$('classx').on('contextmenu', function (event) {
});
हालांकि यह क्रॉस ब्राउज़र समाधान नहीं है, ब्राउज़र इस घटना के लिए अलग-अलग व्यवहार करते हैं विशेष रूप से फ़ायरफ़ॉक्स और आईई। मैं एक क्रॉस ब्राउज़र समाधान के लिए नीचे की सिफारिश करूंगा
$('classx').on('mousedown', function (event) {
var keycode = ( event.keyCode ? event.keyCode : event.which );
if (keycode === 3) {
//your right click code goes here
}
});
यह आग लगाने का सबसे आसान तरीका है, और यह एप्लिकेशन ब्राउज़रों (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>
window.oncontextmenu = function (e) {
e.preventDefault()
alert('Right Click')
}
<h1>Please Right Click here!</h1>
यदि आप फ़ंक्शन को कॉल करना चाहते हैं जबकि राइट क्लिक इवेंट का मतलब है कि हम निम्नलिखित का उपयोग कर सकते हैं
<html lang="en" oncontextmenu="func(); return false;">
</html>
<script>
function func(){
alert("Yes");
}
</script>
यह मेरे साथ काम किया है
if (evt.xa.which == 3)
{
alert("Right mouse clicked");
}
whichऔर / या buttonसंपत्ति का उपयोग करने का प्रयास करें
function onClick(e) {
if (e.which === 1 || e.button === 0) {
console.log('Left mouse button at ' + e.clientX + 'x' + e.clientY);
}
if (e.which === 2 || e.button === 1) {
console.log('Middle mouse button ' + e.clientX + 'x' + e.clientY);
}
if (e.which === 3 || e.button === 2) {
console.log('Right mouse button ' + e.clientX + 'x' + e.clientY);
}
if (e.which === 4 || e.button === 3) {
console.log('Backward mouse button ' + e.clientX + 'x' + e.clientY);
}
if (e.which === 5 || e.button === 4) {
console.log('Forward mouse button ' + e.clientX + 'x' + e.clientY);
}
}
window.addEventListener("mousedown", onClick);
कुछ जानकारी यहाँ

माउस से राइट क्लिक को संभालने के लिए, आप 'oncontextmenu' इवेंट का उपयोग कर सकते हैं। नीचे एक उदाहरण है:
document.body.oncontextmenu=function(event) {
alert(" Right click! ");
};
उपरोक्त कोड कुछ पाठ को सचेत करता है जब राइट क्लिक दबाया जाता है। यदि आप नहीं चाहते हैं कि ब्राउज़र का डिफ़ॉल्ट मेनू दिखाई दे, तो आप रिटर्न गलत जोड़ सकते हैं; फ़ंक्शन की सामग्री के अंत में। धन्यवाद।
हाँ, इसकी एक जावास्क्रिप्ट मूसडाउन घटना है। ऐसा करने के लिए एक jQuery प्लगइन भी है