2016-10-01 3 views
-1

Я пишу интерактивное приложение, в котором пользователь выполняет операции с помощью клавиатуры. Большинство нажатий клавиш фиксируются правильно и выполняются, но на хроме, когда я нажимаю (ctrl + t), открывается новая вкладка, а не вызов моего события нажатия клавиши. Где, как она отлично работает на Firefox и Internet Explorer, вот пример кодаНевозможно предотвратить нажатия клавиш на браузере Chrome.

<html> 
    <head> 
     <style> 
     #section { 
     width: 80%; 
     height: 500px; 
     background: grey; 
     margin: auto; 
     } 
     </style> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
     <script> 
     $(document).ready(function() { 
      $("#section").keydown(function(e) { 
      stopEvent(e); 
      console.log(e.key + " down"); 
      }); 

      function stopEvent (e) { 
      e.stopPropagation(); 
      e.preventDefault(); 
      } 
     }); 
     </script> 
    </head> 
    <body> 
     <div id="section" tabindex="1"> 
     <h2>Keyboard operations</h2> 
     </div> 
    </body> 
</html> 
+0

Это до браузера поставщика. Если он падает с учетом фактического использования компьютера, они не должны препятствовать его использованию JavaScript. – PHPglue

+0

Тот факт, что IE и Firefox позволяют это, очень удивительно. предотвращая ctrl-t, я не ожидаю, что смогу предотвратить. – Keith

+0

Согласен. Я думаю, они думают, что вы все равно можете переместить свою мышь, если хотите новую вкладку. – PHPglue

ответ

0

Смотрите, если это какой-либо помощи,

От: http://unixpapa.com/js/key.html

На KeyDown и KeyUp, то объекты событий также имеют флаги, которые указывают , какие клавиши-модификаторы были нажаты при вводе ключа. Эти являются:

event.shiftKey
event.ctrlKey
event.altKey
event.metaKey

Смежные вопросы