【问题标题】:how to unbind/prevent context menu by keyboard (key #93) with FF?如何使用 FF 通过键盘(键 #93)取消绑定/防止上下文菜单?
【发布时间】:2015-08-24 14:45:45
【问题描述】:

我想阻止键 #93 上的默认事件(select,在 AZERTY 键盘上的 alt grctrl 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;
  }
});

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

【问题讨论】:

  • jsfiddle.net/0kkm1vq0/1 不确定,它对我有用,除非您移出渲染(因此您转到 url 栏或 jsfiddle 的 css 和 html 和 js 部分,它们不是视为渲染)。简而言之,它似乎在 dom 本身内部工作,而您(幸运的是)不能在 DOM 之外禁用它。哦,顺便说一句,它可以同时使用 .which 和 .keyCode,但你应该使用 .which 因为.. this:stackoverflow.com/questions/4471582/javascript-keycode-vs-which
  • 这适用于 chrome,但我在你的 jsfiddle 或这个上也有 FF 38.0.5 的上下文菜单jsfiddle.net/0kkm1vq0/2
  • 我们实际上正在寻找另一个事件,而不是键盘事件,请参阅下面的答案,它应该可以工作。

标签: javascript firefox events contextmenu unbind


【解决方案1】:

检查了一段时间后,我转向了另一个与此类似的问题,但问题完全不同。

无论如何,由于问题在于上下文菜单,因此您甚至不需要 jQuery,解决方案(尽管它不会总是在 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 相同)。

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

编辑:

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

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

【讨论】:

  • @Matrix:是的,但请注意,它也会禁用右键单击,我正在尝试检查我们是否可以以某种方式使其适用于所有现代浏览器(IE、Firefox、Safari ,歌剧,铬)。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多