我正在执行将在浏览器中运行的SWF应用程序。 当Flex应用程序处于焦点时,我想捕获CTRL+F
按键事件。在浏览器中捕获热键
在Firefox中工作正常,但Opera和Safari浏览器在Flex应用程序和查找对话框弹出窗口之前捕获事件。
有没有什么办法可以让flex应用程序捕获CTRL+F
事件之前的浏览器?
我正在执行将在浏览器中运行的SWF应用程序。 当Flex应用程序处于焦点时,我想捕获CTRL+F
按键事件。在浏览器中捕获热键
在Firefox中工作正常,但Opera和Safari浏览器在Flex应用程序和查找对话框弹出窗口之前捕获事件。
有没有什么办法可以让flex应用程序捕获CTRL+F
事件之前的浏览器?
也许将javascript添加到您的html中,该html包含将阻止它的swf。这听起来像那些浏览器以不同的顺序处理事件,所以我怀疑在flash播放器中会做什么可以做到。
其中E是键盘事件:
if(e.commandKey || e.ctrlKey){
switch(e.keyCode){
case Keyboard.N:
// do stuff
break;
}
}
我问这个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应用程序中的焦点恢复到之前的位置,这应该很容易。
干杯, 兰斯