Javascript Global Keyboard Handling, not hearing A

2019-08-23 14:12发布

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?

3条回答
闹够了就滚
2楼-- · 2019-08-23 14:33

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.

查看更多
乱世女痞
3楼-- · 2019-08-23 14:37

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?

查看更多
我想做一个坏孩纸
4楼-- · 2019-08-23 14:54

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

查看更多
登录 后发表回答