2016-11-05 8 views
2

я получил новое требование в проекте, который мы должны предотвратить альт + вкладки горячие клавиши Windows', чтобы предотвратить переключение между окнами ,JavaScript `event.preventDefault()` бесполезен для `Alt + tab` в Windows,

После долгих усилий, я могу предотвратить альт, Ctrl, вкладку, сдвиг, Ctrl + s, Ctrl + с, Ctrl + v и т. д., но я не могу предотвратить alt + tab, будь то Firefox или Chrome.

Я искал в MDN и, наконец, нашел это: prevent the default action of the corresponding key down event in Chrome

Так что я думаю, что альт + вкладка горячая клавиша системы Windows, а не браузера. И event.preventDefault() может только предотвращать события, соответствующие браузеру.

Кто-нибудь есть более подробное объяснение

Ниже мой код:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
    <script> 
     document.addEventListener("keydown", function(e) { 
      //tab keyCode===9 
      //I hope to prevent alt+tab event action in windows 
      if (e.altKey && e.keyCode === 9) { 
       e.preventDefault(); //why not come in? 
      } 
     }, false) 
    </script> 
</body> 
</html> 
+0

Вероятно похожи на CRTL + S в JSFiddle отображается всплывающими окнами в светлячок о спасении страница. –

+0

@ JefréN. Я могу предотвратить CTRL + S сейчас, но не Alt + Tab – PageYe

+3

Во-первых, я бы поставил под сомнение ваше влияние на удобство использования здесь, учитывая, что это ярлык уровня операционной системы, и ожидается, что пользователь продолжит работу. Поскольку таковая alt + tab рассматривается ОС до того, как она будет передана браузеру, вы не увидите нажатия клавиши «tab», если «alt» также удерживается нажатой. Короче говоря, задайте этот вопрос и не пытайтесь смириться с ярлыками уровня ОС;). – Dymos

ответ

3

event.preventDefault() могут только предотвратить события, соответствующие браузера.

Точнее, event.preventDefault() может предотвратить действия событий, которые получает браузер, и принимает решение перейти на веб-страницу.

Alt + Tab обрабатывается за пределами браузера целиком, по Windows DWM. В большинстве случаев этот ярлык вообще не передается в настольные приложения. Поскольку веб-браузеры не уходят с пути, чтобы захватить его, они никогда не будут «видеть» событие вообще. Тот же принцип применяется для Ctrl + Alt + Del.

Некоторые браузеры также будут «защищать» определенные сочетания клавиш, никогда не передавая их на веб-страницу, чтобы пользователи могли полагаться на эти ярлыки, которые всегда ведут себя последовательно.Например, Chrome будет защищать любое событие клавиатуры, которая отображает на одну из следующих команд:

  • Закрыть вкладку (Ctrl + W)
  • Закрыть окно (Ctrl + Shift + W)
  • Новое окно в режиме инкогнито (Ctrl + Shift + N)
  • Новая вкладка (Ctrl + T)
  • Новое окно (Ctrl + N)
  • Восстановление Tab (Ctrl + Shift + T)
  • Выберите Следующая вкладка (Ctrl + Tab, Ctrl + PageDown)
  • Выбрать предыдущую вкладку (Ctrl + Shift + Tab, Ctrl + PageUp)
  • Выхода (Alt + F4, Ctrl + Q)