Событие jQuery Keydown не работает в Chrome
Я использую следующий код JQuery для захвата событий keydown в DIV:
$("#pnlPreview").keydown(pnlPreview_onKeyDown);
Вот конкретные комбинации клавиш, которые я пытаюсь запечатлеть:
- SHIFT + INSERT
- SHIFT + DELETE
- CTRL + INSERT
- CTRL + DELETE
Хотя этот код отлично работает в IE, он не работает в Chrome. Я использую последний браузер Chrome (38.0.2125.104) под Windows 7.
Может кто-нибудь подсказать, пожалуйста, как запечатлеть эти комбинации клавиш в Google Chrome?
Смотрите это jsfiddle: jsfiddle.net/fx7do2cf/7. Это наиболее точно дублирует то, что у меня есть в моем проекте. События нажатия клавиш обнаруживаются в IE и не обнаруживаются в Chrome.
1 ответ
Реальная проблема заключалась не в том, что Chrome не захватывал события нажатия клавиш, а в том, что фокус нельзя было установить на div в Chrome без атрибута tabIndex на div. Хотя фокус может быть установлен на div без атрибута tabindex в IE, в Chrome его нельзя установить.
Все кредиты для решения этой проблемы должны идти в Spokey. Он сыграл важную роль в определении реальной проблемы и в ее решении.
Попробуйте сделать событие keydown как
$(document).on("keydown",'<selector>',function(event){
alert("You clicked " + event.keyCode);
// code
})
Для вышеуказанного случая используйте
$(document).on("keydown",'#pnlPreview', pnlPreview_onKeyDown);