如何使用 FF 通过键盘(#93 键)unbind/prevent 上下文菜单?

how to unbind/prevent context menu by keyboard (key #93) with FF?

我想阻止键 #93 上的默认事件(select,在 alt grctrl right 在 AZERTY 键盘上)。

此键打开右键菜单。

我试过了:

$(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;
  }
});

没有任何效果...我一直都有上下文菜单。

查了一段时间后,我又转到了另一个与这个问题类似的问题,但问题却截然不同。

无论如何,由于问题出在上下文菜单上,您甚至不需要 jQuery 和解决方案(尽管它在 firefox 中并不总是有效,因为用户可能会设置它禁用这样的)是这个:

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

fiddle:

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

也适用于 chrome,您不需要使用键盘侦听器。

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

(与密钥 #93 完全相同)。

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

编辑:

不确定这是否是跨浏览器(下面的更新代码似乎对 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/

只禁用按键而不是右键单击。