Comunidad de diseño web y desarrollo en internet online

deshabilitar atajos de teclado - ayuda

Citar            
MensajeEscrito el 29 Ene 2010 12:16 pm
Hola a todos,

estoy empezando en JS y tengo una duda, quería saber cómo deshabilitar el atajo ALT+TAB, he encontrado un código muy útil para ALT+F4 y Ctrl+R, pero se basa en los números de case, que parecen corresponderse con los números de ASCII (por ejemplo el ALT sería el 18). En códico ASCII he encontrado que TAB se corresponde al 9, pero no encuentro el case de ALT+TAB. ¿Alguién podría yudarme?

Código Javascript :

<script> 
 var cntPresionada = false; 
   var altPresionada = false; 

   ns4 = (document.layers)? true:false; 
   ie4 = (document.all)? true:false; 
   document.onkeydown = keyDown; 
   if (ns4) document.captureEvents(Event.KEYDOWN); 

   function keyDown(e){ 
    var tecla, res = true; 
    if (ns4) tecla = e.which; 
    if (ie4) tecla = event.keyCode; 
    switch(tecla){ 
     case 18: 
      altPresionada = true; 
      break; 
     case 17: 
      cntPresionada = true; 
      break; 
     case 115: 
      if (altPresionada){ 
       alert("Alt-F4 Prohibido"); 
       res = false; 
      } 
      break; 
      case 82: 
      if (cntPresionada){ 
       alert("Cntrl-R Prohibido"); 
       res = false; 
      } 
      break; 
     default: 
      altPresionada = false; 
      cntPresionada = false; 
      break; 
    } 
    return res; 
   } 
</script>


He visto por ahí que hay gente que detecta que te vas de la pantalla según un tiempo, pero mi aplicación es tan "maravillosa" que éso no me sirve, ni el window.onblur, por éso ando detrás del testcase.

gracias por la ayuda

Por malenka_x

54 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ene 2010 05:18 pm
La tecla ALT no genera ningún código ASCII, solo le cambia el estado al teclado (en las PCs al menos), esto el sistema operativo lo traduce como un virtual key code que es lo que estás detectando tú en el código.

Lo que haría en tu caso es ver si ALT está presionada y si es así, verificaría si además está TAB presionado.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Ene 2010 05:23 pm
Hola,

hice lo que me dijiste y encuentra el ALT, pero el TAB no....

Creo haber encontrado un código que puede ayudarme, en cuanto lo pruebe os comento ;)

Por malenka_x

54 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2010 05:42 pm
Hola,

me temo que el código que encontré no me servía en mi caso específico, si alguien tiene que hacer lo mismo, y con una aplicación más amigable que la mía, para bloquear un Alt+Tab hay que recurrir a un exe o a una dll (por ejemplo de C++) y ejecutarlo (por ejemplo, desde flash se haría desde fscommand).

Si alguien tiene alguna idea más...para ayudarme, le estaría agradecida

Por malenka_x

54 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2010 08:28 pm
Ya me parecía que eso no era posible.

Ahora bien, te comento que es muy mala idea tratar de interferir con el comportamiento normal del navegador del visitante de su sitio web. La gente se asusta cuando haces esas cosas y tienden a crear mala fama de tu sitio.

Si tuvieras a bien decirnos por qué crees que necesitas hacer esto quizá podríamos ver si se puede resolver de otra manera, digamos, más ortodoxa y elegante.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Feb 2010 09:12 pm
Hola,

no quiero prohibirlo porque se pensarían cualquier cosa rara, sino captar el atajo de teclado y lanzar una alerta diciendo que se sale de la aplicación. Si sirve de orientación lo único que me ha dicho el cliente es que si quiero ejecutar algo tiene que ser del lado del servidor :S

Muchas gracias

Por malenka_x

54 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Feb 2010 03:02 am
¿Y qué es eso que tiene que ejecutarse del lado del servidor?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 03 Feb 2010 09:33 am
Me refería a la posibilidad de meter un exe o dll con código de C++

Por malenka_x

54 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2010 04:01 pm
¿Pero un exe o DLL que haga qué exactamente?.

¿Será posible que puedas hacer una descripción COMPLETA de tu problema?

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 03 Feb 2010 06:03 pm
Espero no liarte más...

Abro mi aplicación, es un flash en un html. El flash captura el feedback con el usuario, y en ese feedback debe capturar cuando cambia de ventana a otra, o a otra aplicación (ésto con wmode=transparent lo hacía perfectamente ya que flash y html actuaban como uno). Se podía salir un máximo de veces y siempre que se volvía se lanzaba una alerta hecha en flash (llamada desde un js)

Ahora el cliente quiere que se pueda escribir en idiomas no tan comunes (chino, ruso, etc), y la única manera ha sido cambiar el wmode a window, por lo que flash y html actúan por separado. Ésto ha significado que el focus(); depende de donde se cliquee, el html o el flash...si cliqueo en el html me cuenta como un intento de ir a otra ventana, si estoy en el flash no recoge que has vuelto.

Más o menos ése es mi problema, resumido

Por malenka_x

54 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.