2009-04-01 18 views
58

ब्राउज़र संदर्भ मेनू को अक्षम करने के बाद मैं दायाँ क्लिक के साथ कुछ क्रिया कैसे ट्रिगर कर सकता हूं?बाएं ईवेंट को दाएं माउस पर क्लिक करें

मैंने कोशिश की। । ।

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
     $('.alert').fadeToggle(); 
     return false; 
    }); 
}); 
+1

देखें http://stackoverflow.com/a/2725963/287948 –

+0

आप फंक्शन रिटर्न के बाद कुछ करने की कोशिश कर रहा है _after_! – Tom

उत्तर

93

कोई निर्मित jQuery में oncontextmenu ईवेंट हैंडलर, लेकिन आप कुछ इस तरह कर सकते हैं:

$(document).ready(function(){ 
    document.oncontextmenu = function() {return false;}; 

    $(document).mousedown(function(e){ 
    if(e.button == 2) { 
     alert('Right mouse button!'); 
     return false; 
    } 
    return true; 
    }); 
}); 

मूल रूप से मैं ब्राउज़र संदर्भ मेनू को निष्क्रिय करने के DOM तत्व का oncontextmenu घटना को रद्द , और फिर मैं jQuery के साथ mousedown घटना को कैप्चर करता हूं, और वहां आप घटना तर्क में जान सकते हैं कि बटन दबाया गया है।

आप उपरोक्त उदाहरण here को आजमा सकते हैं।

+0

'$ (दस्तावेज़) [0]' 'दस्तावेज़ 'जैसा नहीं है? – configurator

+0

@configurator, हाँ यह एक टाइपो है। धन्यवाद :) – CMS

+1

आपका उत्तर गलत है: http://jsfiddle.net/Zmdzv/ – andrewrk

0

contextmenu कोई घटना है?

मैं का प्रयोग करेंगे onmousedown या onclick तो MouseEvent के बटन संपत्ति हड़पने निर्धारित करने के लिए बटन दबाया गया था (0 = बाईं, 1 = बीच, 2 = दाएं)।

47

फ़ंक्शन बहुत जल्दी लौटाता है। मैं नीचे दिए गए कोड के लिए एक टिप्पणी जोड़ दिया है:

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
     return false; 
     $('.alert').fadeToggle(); // this line never gets called 
    }); 
}); 

अगली पंक्ति के साथ return false; अदला-बदली की कोशिश करो।

+6

+1, बाध्यकारी 'contextmenu' अब समर्थित है! –

+0

"1 अप्रैल से पूछा गया "09 - मुझे लगता है कि यह महत्वपूर्ण नहीं है। ;) –

+0

@zourtney आप इसे क्या निष्कर्ष निकालते हैं? JQuery दस्तावेज़ों में 'contextmenu' का समर्थन करने के बारे में कुछ भी उल्लेख नहीं है ... – bart

15

बस ईवेंट-हैंडलर का उपयोग करें। इस तरह कुछ काम करना चाहिए:

$('.js-my-element').bind('contextmenu', function(e) { 
    e.preventDefault(); 
    alert('The eventhandler will make sure, that the contextmenu dosn't appear.'); 
}); 
2

मुझे यह जवाब यहां मिला और मैं इसका उपयोग इस तरह कर रहा हूं। मेरी लाइब्रेरी से

कोड:

$.fn.customContextMenu = function(callBack){ 
    $(this).each(function(){ 
     $(this).bind("contextmenu",function(e){ 
      e.preventDefault(); 
      callBack(); 
     }); 
    }); 
} 
मेरा पेज की स्क्रिप्ट से

कोड:

$("#newmagazine").customContextMenu(function(){ 
    alert("some code"); 
}); 
1
document.oncontextmenu = function() {return false;}; //disable the browser context menu 
$('selector-name')[0].oncontextmenu = function(){} //set jquery element context menu 
0

बस निम्नलिखित के साथ ऐसा एक पेज के सभी छवियों पर राइट क्लिक संदर्भ मेनू अक्षम करने के लिए:

jQuery(document).ready(function(){ 
    // Disable context menu on images by right clicking 
    for(i=0;i<document.images.length;i++) { 
     document.images[i].onmousedown = protect; 
    } 
}); 

function protect (e) { 
    //alert('Right mouse button not allowed!'); 
    this.oncontextmenu = function() {return false;}; 
} 
0

.contextmenu विधि: -

कोशिश के रूप में इस प्रकार है

<div id="wrap">Right click</div> 

<script> 
$('#wrap').contextmenu(function() { 
    alert("Right click"); 
}); 
</script> 

.mousedown विधि: -

$('#wrap').mousedown(function(event) { 

     if(event.which == 3){ 
      alert('Right Mouse button pressed.'); 
     } 
}); 
संबंधित मुद्दे