Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2008, 11:22
cjazz
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Problemas para bloquear "hotkeys" en el IE y una película de flash


Hola!!

Estoy en vías de desarrollar un editor de texto con flex. Actualmente tengo una película de flash que contiene únicamente una caja de texto para comenzar a escribir. Utilizo una librería llamada FABridge para hacer interactuar al código action script con javascript.

El caso es que deseo que cuando el usuario oprima las teclas Ctrl + B, el texto que se comience a ingresar esté en "negritas". Ya intenté bloquear las "hotkeys" del IE mediante el evento onkeydow:

function IEOnKeyDown(){
if(event.ctrlKey){ //if press ctrl
if(event.keyCode == 66){ //character "B"
var ban = 1;
var tipo_alter = "b"; //Negritas
alert("Negritas");
}

if(ban == 1){
event.returnValue = false;
event.keyCode = 0;
var flexApp = FABridge.negritas.root(); //Interacción con el AS
flexApp.alterText(tipo_alter); // Activa la función para comenzar a escribir negritas
}
}
}

Esto funciona mientras el foco de la página esté en un elemento como el <body> o un <div>. Sin embargo, cuando el foco de la página está sobre la película de flash, al presionar las teclas Ctrl + B se abre la ventana de Favoritos del explorer, justo lo que intento bloquear. Intenté asignarle la función IEOnKeyDown() al evento onkeydown del <object> donde está embedida la película de flash, pero no me funcionó.

Es justo mencionar que he buscado información sobre el evento onkeydown en action script. Puedo determinar combinación de teclas ahí, pero si éstas corresponden a las "hotkeys" del IE, éste siempre las reconoce primero. Por lo que no puedo indicarle por medio de este lenguaje que las bloqueé o que ejecute alguna otra acción. Este es el código que uso en AS:

public function onKeyDown(event:KeyboardEvent):void{
if (event.ctrlKey){
if(event.keyCode == 85)
Alert.show("Se oprimió Ctrl + U"); // La película de flash sí reconoce esta combinación de teclas y envía el alert correspondiente
else if(event.keyCode == 66){
ExternalInterface.call('IECtrl'); // Intento de interacción con el código Js para bloquear la llamada a favoritos
Alert.show("Se oprimió Ctrl + B");
}
}
}

Alguien tiene alguna idea de cómo puedo bloquear las "hotkeys" del IE usando javascript, cuando éstas son oprimidas por el usuario al escribir sobre la caja de texto de la película de flash??

Muchas gracias por su ayuda!! Esto me ha estado dando dolor de cabeza por más de dos semanas