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

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

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


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

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


person Lance Pollard    schedule 11.11.2009    source источник


Ответы (3)


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

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

person Jörg Reichardt    schedule 11.11.2009

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

person Tim Down    schedule 11.11.2009
comment
Я не могу делать такие вещи, как CMD-Q / CTRL-Q во Flash, он закроет браузер: /. Я могу слышать все события клавиатуры Flash, но не в документе .... какие-нибудь другие идеи? - person Lance Pollard; 11.11.2009

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

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

person epascarello    schedule 11.11.2009
comment
Я пробовал и окно, и документ, они оба работают одинаково. Чтобы усугубить это, он работает только в Safari, Firefox ничего не регистрирует. - person Lance Pollard; 11.11.2009
comment
как вспышка его блокирует? есть ли способ обойти это? - person Lance Pollard; 11.11.2009
comment
Вы создали страницу только с обработкой событий и ничего больше? Заставьте его работать без чего-либо на странице и добавляйте элементы по одному, пока он не сломается. - person epascarello; 11.11.2009