2015-06-09 5 views
0

Я хочу, чтобы предотвратить событие по умолчанию на клавишу # 93 (выбрать между альт гр и Ctrl право на AZERTY клавиатуре).как развязать/запретить контекстное меню с помощью клавиатуры (клавиша # 93) с FF?

Это ключевое открытое контекстное меню, как правый щелчок.

Я пробовал:

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

Ничто не работает ... Я всегда Контекстное.

+0

http://jsfiddle.net/0kkm1vq0/1/ не уверен, что он работает здесь для меня, если вы не выходите из рендера (следовательно, вы переходите к строке url или в css и html и js разделах jsfiddle , которые НЕ рассматриваются как оказывающие). В двух словах, похоже, он работает внутри самого купола, в то время как вы (к счастью) не можете отключить его из DOM. О, в качестве побочного примечания, он работал с обоими .which и .keyCode, но вы должны использовать., Потому что .. это: http://stackoverflow.com/questions/4471582/javascript-keycode-vs-which – briosheje

+0

это работает на chrome, но у меня есть контекстное меню с FF 38.0.5 на вашем jsfiddle или на этом тоже http://jsfiddle.net/0kkm1vq0/2/ – Matrix

+0

мы фактически ищем другое событие, а не события клавиатуры, см. мой ответ ниже, он должен работать. – briosheje

ответ

1

После некоторого времени проверки, я направился к другому вопросу, подобному этому, но с совершенно другим вопросом.

В любом случае, поскольку проблема заключается в контекстном меню, вам даже не нужен jQuery для такого решения, и решение (несмотря на то, что оно не всегда работает в firefox, поскольку пользователь может отключить его) это одна:

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

скрипка:

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

Работа по хрому, а также, и вам не нужно будет использовать слушатель клавиатуры.

Ссылка: How to disable right-click context-menu in javascript

(который на самом деле так же, как клавиша # 93).

** обратите внимание, что это отключит правый щелчок **.

EDIT:

Не уверен, если это кросс-браузер (обновленный код ниже, кажется, работает как для хрома и светлячок, не пробовал 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/

чтобы отключить только ключ, а не правую кнопку мыши.

+0

хорошая работа, хорошее событие oncontextmenu;) – Matrix

+0

@Matrix: Да, но помните, что он также отключит правый щелчок, я пытаюсь проверить, можем ли мы каким-то образом заставить его работать во всех современных браузерах (IE , Firefox, Safari, Opera, Chrome). – briosheje