Javascript Global Keyboard Handling, not hearing A-Z Keys?
Asked Answered
P

3

0

I am trying to use Javascript to intercept keyboard events, so I can do CMD-W for "close-window" and whatnot, inside a Flash application, so the Browser doesn't get to use them.

Well, I am able to listen for ALT, CTRL, and CMD onKeyDown/onKeyPress events, but I am not able to listen to anything else... Here is the code, in the index.html file from a Flex Project:


<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>

I would like to make it so it could listen to any key press, not just alt/ctrl/cmd. What am I missing?

Prowess answered 11/11, 2009 at 6:34 Comment(0)
A
2

Like Tim, I guess Flash/Flex is swallowing the key events. Since Alt etc are Meta Keys, they don't fire a keypress event in Flex and are passed to JS. On the other hand, certain gestures (e.g. Ctrl+A on some browsers) are prevented to be ever received by Flash. I imagine, that for the same reason (security) these are also prevented from beeing handled by JS. Which key gestures are protected is highly browser dependend.

Probably the browser won't allow you to handle CTRL-Q so that the user can always close his browser, even when having some malicous sites open.

Archaism answered 11/11, 2009 at 15:14 Comment(0)
M
1

I imagine the Flash movie is handling the key events and preventing them propagating up the document tree. Why not handle the events in the Flash itself?

Melainemelamed answered 11/11, 2009 at 8:12 Comment(1)
I can't do things like CMD-Q/CTRL-Q in Flash, it will close the Browser :/. I can hear all the keyboard events Flash, but not in the document.... any other ideas?Prowess
G
1

Are you sure Flash is not blocking it? Have you tried to run your code on a page without Flash on it?

You should try attaching the events to window and not document

Gileadite answered 11/11, 2009 at 8:14 Comment(3)
I tried both, "window" and "document", they both work the same. To compound it, it only works on Safari, Firefox doesn't register anything.Prowess
how would flash be blocking it? is there a way around that?Prowess
Have you created a page with just the event handling on it and nothing else? Get it working without anything on the page and add stuff one at a time until it breaks.Gileadite

© 2022 - 2024 — McMap. All rights reserved.