Глобальная обработка клавиатуры в Javascript, не слышно клавиш A-Z? - PullRequest
0 голосов
/ 11 ноября 2009

Я пытаюсь использовать Javascript для перехвата событий клавиатуры, поэтому я могу сделать CMD-W для «закрытия окна» и еще чего-то внутри приложения Flash, чтобы браузер не мог их использовать.

Что ж, я могу прослушивать события ALT, CTRL и CMD onKeyDown / onKeyPress, но я не могу слушать что-либо еще ... Вот код в файле index.html из проекта Flex :


<code><script language="JavaScript" type="text/javascript"></code>
document.onkeydown = function(event) {applicationKeyboardHandler(event)}
document.onkeypress = function(event) {applicationKeyboardHandler(event)}
function applicationKeyboardHandler(event) {
    alert("Key Pressed")
}
<code></script>

Я хотел бы сделать так, чтобы он мог слушать любое нажатие клавиши, а не только alt / ctrl / cmd. Чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2009

Как и Тим, я думаю, что Flash / Flex поглощает ключевые события. Поскольку Alt и т. Д. Являются мета-ключами, они не запускают событие нажатия клавиш во Flex и передаются в JS. С другой стороны, некоторые жесты (например, Ctrl + A в некоторых браузерах) не могут быть приняты Flash. Я предполагаю, что по той же причине (безопасность) они также не могут быть обработаны JS. Какие ключевые жесты защищены, зависит от браузера.

Вероятно, браузер не позволит вам обрабатывать CTRL-Q, чтобы пользователь мог всегда закрывать свой браузер, даже когда открыты вредоносные сайты.

1 голос
/ 11 ноября 2009

Вы уверены, что Flash не блокирует его? Вы пытались запустить свой код на странице без Flash на нем?

Вы должны попробовать присоединить события к окну , а не документу

1 голос
/ 11 ноября 2009

Я полагаю, что Flash-ролик обрабатывает ключевые события и предотвращает их распространение по дереву документов. Почему бы не обработать события в самой Flash?

...