2012-12-03 87 views
3

好吧,据我了解,到目前为止,我们有2种方法抑制浏览器默认右键单击菜单 - 优化?

首先一些JavaScript,我可以在给定的脚本内使用。但是,这切换右键单击一切。

window.oncontextmenu = function() { 
     return false; 
}; 

或HTML可以编码

<body oncontextmenu="return false;"> 

,但我不能迄今发现的任何地方,这将使我的JavaScript或jQuery的解决方案,我可以把这个给定的选择。这是不可能的,或者我误解了某些东西。

我发现在单一的右键单击我的子菜单后立即出现浏览器的默认菜单。我发现要抑制这一点的唯一方法是将oncontextmenu设置为false。有没有更完善的解决方案?

进一步说明,以公认的答案

还成功地使用委托应用于动态菜单:

$(document).on("contextmenu", "#existing_Flavours .field_Input_Left.flavour", function(){ 
     return false; // suppress browsers default right click menu 
}); 
+1

[不这样做(http://www.sitepoint.com/dont-disable-right-click/)。这很烦人,您的用户将A)再也不会访问您的网站,或B)通过脚本拦截器和/或手动绕过它。 – jbabey

+0

这是完全相同的副本。 http://stackoverflow.com/questions/706655/bind-event-to-right-mouse-click –

+0

嗯,我不能说我完全理解为什么这应该是。但我相信你是对的。但肯定必须有一种方法来阻止默认菜单出现在使用右键单击的位置。 @jbabey – codepuppy

回答

7
$('#mySelector').on('contextmenu', function(){ 
    return false; 
}); 

只需绑定它,就象任何其它事件...

但是,如果您想要对“保护”的内容执行此操作,则它很少安全性。这很容易绕过。

演示:http://jsfiddle.net/V3sWc/

+0

不,我不想保护或阻止任何人查看代码,我只是想停止取消菜单,这是右键点击被默认菜单覆盖。由于@ jbabey对此产生了怀疑,我能够假设在jQuery环境中使用它不会导致他的脚本拦截器陷入困境。顺便说一句,这正是我想要找到如此多的感谢。我只是要测试它。 – codepuppy

+0

好吧,我所选的元素不会在页面的其他地方显示默认的右键菜单。绝对完美。 – codepuppy

相关问题