Захват Ctrl событий клавиатуры в Javascript
Пример кода:
$(window).keydown(function(event) {
if(event.ctrlKey && event.keyCode == 84) {
console.log("Hey! Ctrl+T event captured!");
event.preventDefault();
}
if(event.ctrlKey && event.keyCode == 83) {
console.log("Hey! Ctrl+S event captured!");
event.preventDefault();
}
});
Firefox
(проверено 6.0.1)
В Firefox оба слушателя событий работают. Если вы нажмете Ctrl T или Ctrl S комбинаций клавиш, вы получите и сообщение на консоли, и браузер не откроет вкладку , ни попросить сохранить.
Интересно, что если вы используете alert
вместо console.log
, event.preventDefault()
не работает и открывает новую вкладку или запрашивает сохранение. Возможно, эту ошибку нужно исправить.
Chrome3
В Chrome 3 он работает как в Firefox.
Chrome4
(проверено)
В Chrome4 определенные комбинации клавиш управления зарезервированы для браузера
только для использования и больше не может быть перехвачен на стороне клиента JavaScript
на веб-странице.
Эти ограничения не существовали в Chrome3 и несовместимы с обоими
Firefox3 / 3.5 и IE7 / 8 (в Windows).
В Chrome 4 он работает аналогично Firefox, за исключением некоторой комбинации клавиш:
Ctrl N
Ctrl Сдвиг N
Ctrl T
Ctrl W
Ctrl Сдвиг W
Эти комбинации не могут быть захвачены Javascript, , но плагины для встраивания могут захватывать их. Например, если вы сфокусировались на видео на Youtube и нажали Ctrl T , браузер не откроет новую вкладку.
IE7 / 8
Работает как в Firefox или Chrome3.
IE9
(проверено)
IE9 снова стал паршой, потому что он не позволяет javascript перехватывать любое событие клавиатуры Ctrl ? . Я тестировал со многими комбинациями клавиш (R, T, P, S, N, T) и ни одна не работала. Также встроенные приложения не могут захватить событие. Протестировано с Youtube видео.
Спасибо @ Lime за замечательную ссылку .