在浏览器中捕获热键

时间:2009-12-29 04:48:18

标签: flex actionscript cross-browser

我正在做SWF应用程序,它将在浏览器中运行。 我希望在Flex应用程序处于焦点时捕获CTRL+F按键事件。

在Firefox中,它可以正常工作,但在Opera和Safari浏览器中,可以在Flex应用程序和“查找对话框”弹出窗口之前捕获事件。

Flex应用程序有没有办法在浏览器之前捕获CTRL+F事件?

3 个答案:

答案 0 :(得分:2)

我问了这个same question recently并一直在玩它。

我在github上提出了这个要点:

Browser KeyboardEvent Hijacking with Javascript and Flex

CTRL-F有效!

查看那里的javascript。基本上,使用Safari,你只能听到元键(ctrl / alt / shift等);如果Flash由于某种原因运行,它将不允许javascript听到A-Z事件。所以我只是在javascript中监听元键,然后在javascript中调用window.focus()。这将焦点放在浏览器上,使其可以劫持浏览器键盘事件!然后我会听A-Z事件或其他什么,并将它们传递给Flex。

下一步是将Flex应用程序中的焦点恢复到之前的任何位置,这应该很容易。

干杯, 兰斯

答案 1 :(得分:0)

也许将javascript添加到包含将阻止它的swf的html中。听起来这些浏览器以不同的顺序处理事件,所以我怀疑你可以在flash播放器中做任何事情。

答案 2 :(得分:0)

其中e是键盘事件:

if(e.commandKey || e.ctrlKey){

    switch(e.keyCode){
        case Keyboard.N:
            // do stuff
            break;
    }
}