【问题标题】:Suppressing a Browsers Default Right Click Menu - refinement?禁止浏览器默认右键单击菜单 - 细化?
【发布时间】:2012-12-04 04:45:23
【问题描述】:

好吧,据我所知,目前我们有两种方法

首先是一些我可以在给定脚本中使用的 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
});

【问题讨论】:

  • Don't do it。这很烦人,您的用户将 A) 不再访问您的网站或 B) 通过脚本拦截器和/或手动绕过它。
  • 这是一模一样的副本。 stackoverflow.com/questions/706655/…
  • 好吧,我不能说我完全理解为什么会这样。但我相信你是对的。但肯定有一种方法可以阻止默认菜单出现在使用右键单击的位置。 @jbabey
  • @Andrew - 关于您引用的问题,接受的答案是错误。 jQuery 现在支持contextmenu
  • @ahren 他们都是对的,两个答案都在那个问题中,这与这个问题完全相同。

标签: javascript jquery


【解决方案1】:
$('#mySelector').on('contextmenu', function(){
  return false;
});

就像绑定任何其他事件一样绑定它...

但是,如果您想这样做以“保护” 内容,则安全性非常低。很容易绕过。

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

【讨论】:

  • 不不,我不想保护或阻止任何人查看代码,我只想阻止我的取消菜单被默认菜单覆盖,该菜单位于右键单击之外。由于@jbabey 对此表示怀疑,我可以假设在 jquery 上下文中使用它不会导致他的脚本阻止程序处于愤怒状态。顺便说一句,这正是我想知道的,非常感谢。我只是要测试一下。
  • 好的,我选择的元素不会在页面上的其他任何地方显示默认的右键菜单。绝对完美。
猜你喜欢
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多