【问题标题】:Disable right click menu on click单击时禁用右键菜单
【发布时间】:2013-10-05 15:41:27
【问题描述】:

我正在尝试用 php 和 jquery 构建一个扫雷游戏。这意味着我希望用户能够右键单击元素以将区域标记为潜在的炸弹或问号。现在我有右键单击事件并且代码可以正常工作,但是如果我不提醒任何东西,我会得到带有检查元素等的菜单。我尝试输入一些 return false,但它们没有帮助。如何停止右键单击时出现的菜单?

$('.overlay').mousedown(function(event) {
switch (event.which) {
    case 1:
        //left click code
        break;
    case 3:
        theID = event.target.id;
        if ($('#'+theID).is(":visible") && $('.bomb_'+theID).css("visibility") == "hidden" 
        && $('.mystery_'+theID).css("visibility") == "hidden"){
            $('#'+theID).css("background", "none");
            $('.bomb_'+theID).css("visibility", "visible");
            alert("x");
        }else if($('.bomb_'+theID).is(":visible")){
            $('.bomb_'+theID).css("visibility", "hidden");
            $('.mystery_'+theID).css("visibility", "visible");
            alert("y");
        }else{
            $('.mystery_'+theID).css("visibility", "hidden");
            $('#'+theID).css("background", "#fff");
            alert("z");
        }
        break;
}
});

已尝试添加 event.preventDefault();在 mousedown 功能下,但这不会改变任何东西。在案例3下也试过了:。

同样返回false;和 event.stopImmediatePropagation();不工作。

【问题讨论】:

  • 用event.preventDefault防止鼠标右键的默认动作
  • 感谢您的评论,很遗憾它没有帮助。我试着把它放在 case 3: which didn't work,以及 $('.overlay').mousedown ~

标签: javascript jquery


【解决方案1】:

您是否通过上下文菜单事件尝试过这个?

$(".overlay").on("contextmenu",function(e){
   ....
   e.stopImmediatePropagation();
   e.preventDefault();
   return false;
});

【讨论】:

  • 谢谢,两者都返回 false;和防止默认();通过 stopImmediatePropagation(); 为我工作没有。
  • @JakeRowsell 它不会阻止它,但它会阻止在 Javascript 中运行的其他事件侦听器处理它。反正你没有其他听众,所以没关系。
【解决方案2】:

你可能想试试event.preventDefault()

【讨论】:

  • 试图在下面添加: $('.overlay').mousedown(function(event) { 但它没有任何区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多