【问题标题】:Disable Context Menu (Right click) with Javascript使用 Javascript 禁用上下文菜单(右键单击)
【发布时间】:2016-04-18 06:06:30
【问题描述】:

我想禁用表格上的右键菜单。因为我正在使用右键单击来更改它的颜色(做了一个小战舰游戏)。但是我没有发现任何仍然有效的东西。所以我真的很感激你的回答:)

这是电话:

<td class="tdBox" onclick="attack(this, ${xStatus.count}, ${yStatus.count})" onmouseover="background(this)" onmouseout="backgroundLeave(this)" oncontextmenu="markField(this)">

这是 JavaScript 函数:

function markField(obj) {
    obj.style.backgroundColor = 'blue';
    //return false;
}

【问题讨论】:

  • 看起来像stackoverflow.com/questions/737022/…的部分复制
  • 从 kay27 发布的链接中获取代码。用您的颜色更改代码替换 alert(status); 行。附言但是,我建议您不要使用右键单击进行输入,因为这在网络应用程序上绝不是一个好主意。

标签: javascript contextmenu right-click


【解决方案1】:

以下是覆盖contextmenu 事件处理程序的方法:

document.addEventListener("contextmenu", function(e) {
  e.preventDefault();
  alert('Right click');

  // Or, in you case: markField()
});

注意:使用document 不是必需的。它适用于任何 DOM 节点。或者,您可以通过检查e 的目标来使阻塞有条件。

小提琴:https://jsfiddle.net/h1jdr1ew/1/

【讨论】:

  • 这确实有效,因为我不想禁用整个站点的右键单击。但是,我通过使用 getElementsByClassName 找到了基于此的解决方案。 function disableRightClick(){ var tdBox = document.getElementsByClassName("tdBox"); for (i = 0; i &lt; tdBox.length; i++) { tdBox[i].addEventListener("contextmenu", function(e) { e.preventDefault(); }); } }
  • 是的,它可以在任何 DOM 节点上工作,而不仅仅是document
【解决方案2】:

试试这个代码

<script language="javascript">
function markField(obj)
{
  if(event.button==2)
   {
     //add your code here
     obj.style.backgroundColor = 'blue';
     return false;    
   }
}
</script>

<td class="tdBox" onclick="attack(this, ${xStatus.count}, ${yStatus.count})" 
onmouseover="background(this)" onmouseout="backgroundLeave(this)" 
oncontextmenu="markField(this)">

【讨论】:

  • 我已经用 return false 试过了;但它没有用。
  • 出现什么错误?另外,哪个浏览器?某些浏览器不允许禁用右键单击。编辑:在控制台检查 JS 是否抛出错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2019-12-17
相关资源
最近更新 更多