将事件绑定到鼠标右键单击

禁用浏览器上下文菜单后,如何通过右键单击来触发某些操作?

我试过这个。 。 。

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

在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事件,在那里你可以知道事件参数哪个button被按下。

你可以在这里试试上面的例子。

该函数返回太早。 我已经添加了对下面的代码的评论:

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

尝试交换return false; 与下一行。

只需使用事件处理程序。 像这样的东西应该工作:

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

我在这里find了这个答案,我正在使用它。

来自我的书库的代码:

 $.fn.customContextMenu = function(callBack){ $(this).each(function(){ $(this).bind("contextmenu",function(e){ e.preventDefault(); callBack(); }); }); } 

我的页面脚本中的代码:

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

contextmenu是一个事件?

我会使用onmousedownonclick然后抓住MouseEventbutton属性,以确定哪个button被按下(0 =左,1 =中,2 =右)。

要在页面的所有图像上禁用右键单击上下文菜单,只需执行以下操作:

 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;}; } 

.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.'); } });