2009-12-29 16 views
7

Estoy haciendo una aplicación SWF que se ejecutará en el navegador. Y quiero capturar el evento de presionar la tecla CTRL+F cuando la aplicación Flex está enfocada.Capturar teclas rápidas en los navegadores

En Firefox funciona bien pero en el navegador Opera y Safari se captura el evento antes de la aplicación Flex y las ventanas emergentes Buscar cuadro de diálogo.

¿Hay alguna forma de que la aplicación flexible capture CTRL+F evento previo navegador?

Respuesta

0

Quizás agregue javascript a su html que contenga el swf que lo bloquearía. Parece que esos navegadores procesan los eventos en un orden diferente, así que dudo que haya algo que puedas hacer desde dentro del reproductor flash que lo haga.

0

donde E es un evento de teclado:

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

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

hice esta same question recently y han estado jugando un rato con él.

me ocurrió con esta GIST en github:

Browser KeyboardEvent Hijacking with Javascript and Flex

CTRL-F funciona!

Echa un vistazo al javascript que hay allí. Básicamente, con Safari, solo puedes escuchar las teclas meta (ctrl/alt/shift, etc.); no permitirá javascript para escuchar eventos A-Z si Flash se está ejecutando por alguna razón. Así que solo escucho las claves meta en javascript, y luego llamo al window.focus() en javascript. Eso establece el foco en el navegador, por lo que puede secuestrar los eventos del teclado del navegador !. Luego escucho los eventos A-Z o lo que sea, y los paso a Flex.

El siguiente paso es simplemente restaurar el foco en su aplicación Flex a donde estaba antes, lo que debería ser fácil.

Cheers, Lance

Cuestiones relacionadas