В моем приложении есть обработчик клавиатуры SHIFT - F10 , как показано ниже:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script>
$(document).on('keyup keydown', function(e) {
  if (e.keyCode === 121 && e.shiftKey === true) {
    console.log('shift-f10 detected');
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
  }
});
</script>
</body>
</html>

Но в последних версиях Firefox (по крайней мере, FF56) в правом верхнем углу страницы появляется контекстное меню:

context-menu appears when user presses shift-10

Мне не удалось отключить контекстное меню с помощью:

e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();

Есть ли способ предотвратить появление этого контекстного меню?

0
Jonathan.Brink 13 Ноя 2017 в 22:27

1 ответ

Лучший ответ

Попробуйте следующий код:

 $document.on('contextmenu',  (ev) => {
        return false;
 });

Или же:

$(document).on('keydown', function(e) {
  if (e.keyCode === 121 && e.shiftKey === true) {
    return false;
  }
});

Возможно, вы можете использовать:

 document.body.addEventListener('keydown',function(ev){
      if (ev.keyCode === 121 && ev.shiftKey === true)
               {
                 ev.preventDefault();
               }
    });

Если этот код не работает - фокус не находится в браузере, или у вас другие ошибки. Попробуйте код.

2
Сергей Петрашко 13 Ноя 2017 в 20:22