2009-12-29 67 views
7

我正在执行将在浏览器中运行的SWF应用程序。 当Flex应用程序处于焦点时,我想捕获CTRL+F按键事件。在浏览器中捕获热键

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

有没有什么办法可以让flex应用程序捕获CTRL+F事件之前的浏览器?

回答

0

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

0

其中E是键盘事件:

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

    switch(e.keyCode){ 
     case Keyboard.N: 
      // do stuff 
      break; 
    } 
} 
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应用程序中的焦点恢复到之前的位置,这应该很容易。

干杯, 兰斯