javascript - 如何使用 FF 解除/阻止键盘(键 #93)的上下文菜单?

标签 javascript firefox events contextmenu unbind

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

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

我尝试过:

$(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

(实际上与 key #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/

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

关于javascript - 如何使用 FF 解除/阻止键盘(键 #93)的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737870/

相关文章:

javascript - 在 JavaScript 中将 float 转换为整数,四舍五入到小数点后两位

javascript - Angular.JS : Data not getting updated in Angular for Popups

javascript - jQuery .on() 语法并将多个参数传递给函数

java - NIO 选择器默认使用事件通知吗?

c# - 确定谁触发了事件

javascript - SweetAlert2:意外的 html 类型!期望 "string",得到对象

javascript - 渲染 Canvas 的速度超过每秒 60 次?

html - Firefox 中使用 Bootstrap 的负边距

Javascript,以编程方式触发firefox中的文件下载

javascript - 为什么在没有单击按钮的情况下加载页面时会触发我的脚本函数?