将事件绑定到鼠标右键单击
禁用浏览器上下文菜单后,如何通过右键单击来触发某些操作?
我试过这个。 。 。
$(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
是一个事件?
我会使用onmousedown
或onclick
然后抓住MouseEvent
的button属性,以确定哪个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.'); } });