我想阻止 #93 键上的默认事件(AZERTY 键盘上 alt gr 和 ctrl 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/