如何通过键盘(键#93)解除/阻止上下文菜单与FF?

时间:2015-06-09 16:32:12

标签: javascript firefox events contextmenu unbind

我想阻止键#93上的默认事件(选择,在AZERTY键盘上的 alt gr ctrl right 之间)。

此键打开上下文菜单,如右键单击。

我试过了:

$(document).off('keydown');
$(document).off('keyup');
$(document).off('keypress');

$(document).on('keypress', function(e){
  if(e.keyCode == 93)
  {
     e.preventDefault();
     return false;
  }
});

$(document).on('keyup', function(e){
  if(e.keyCode == 93)
  {
     e.preventDefault();
     return false;
  }
});

$(document).on('keydown', function(e){
  if(e.keyCode == 93)
  {
     e.preventDefault();
     return false;
  }
});

没有任何作用......我总是有上下文。

1 个答案:

答案 0 :(得分:1)

经过一段时间的检查后,我已经开始讨论与此问题类似的另一个问题,但问题非常不同。

在任何情况下,由于问题是上下文菜单,你甚至不需要jQuery和解决方案(尽管WON&#T; T总是在firefox中工作,因为用户可能会将其设置为禁用这是一个:

document.oncontextmenu = function (e) {
     e.preventDefault();
     return false; 
}

小提琴:

http://jsfiddle.net/0kkm1vq0/3/

也适用于Chrome,您不需要使用键盘监听器。

参考:How to disable right-click context-menu in javascript

(与#93键实际上相同)。

**请注意,这也会禁用右键**。

编辑:

不确定这是否是跨浏览器(下面的UPDATED代码似乎适用于chrome和firefox,虽然没有尝试过IE和其他人),但是关键#97触发的事件似乎已被确定为1,虽然点击似乎被识别为键3,所以你可以只是:

(function($){
    if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
        $(document).on('keyup', function(e) {
           e.which == 93 && e.preventDefault(); 
        });
    }
    else {
        document.oncontextmenu = function (e) {
         e.which == 1 && e.preventDefault();
        }   
    }
})(jQuery);

http://jsfiddle.net/0kkm1vq0/10/

要禁用键,而不是右键单击。