Ver Mensaje Individual
  #9 (permalink)  
Antiguo 22/07/2008, 05:54
eContento
 
Fecha de Ingreso: junio-2004
Mensajes: 621
Antigüedad: 19 años, 11 meses
Puntos: 25
Respuesta: Propagación de eventos en JavaScript

Vale,
Ya lo tengo solucionado.
Habitualmente, en los foros casi siempre se pregunta en busca de ayuda. Pero también es bueno poner la solución que hemos encontrado por si le puede servir a otros.

Os dejo aquí la solución que he encontrado al problema que tenía.


Código PHP:
//funciones para el control de la captura de teclas
var isCtrl false;


document.onkeyup=function(e){
    
|| window.event;
    if(
e.keyCode == 17isCtrl=false


document.onkeydown=function(e){
    
|| window.event;
    
    if(
e.target){ 
        
objE=e.target;
    }else if(
e.srcElement){
        
objE=e.srcElement;
    }
    
    switch(
e.keyCode){
        case 
17:
            
isCtrl=true;
            break;
        case 
112:
            
document.onhelp=function () { return false; }
            
tecla(0,objE.id,e);    
            break;
        case 
113:
            
tecla(1,objE.id,e);    
            break;
        case 
114:
            
tecla(2,objE.id,e);    
            break;
        case 
115:
            
tecla(3,objE.id,e);    
            break;
        case 
116:
            
tecla(4,objE.id,e);    
            break;
        case 
117:
            
tecla(5,objE.id,e);
            break;
        case 
118:
            
tecla(6,objE.id,e);    
            break;
        case 
119:
            
tecla(7,objE.id,e);
            break;
        case 
120:
            
tecla(8,objE.id,e);
            break;
        case 
121:
            
tecla(9,objE.id,e);
            break;
        case 
122:
            
tecla(10,objE.id,e);
            break;
        case 
123:
            
tecla(11,objE.id,e);
            break;
    }
}

function 
pararPropagacionEvento(e){
    
//e.cancelBubble is supported by IE - this will kill the bubbling process.
    
if (document.all){
        
e.keyCode 0;  //<<< esto ayuda mucho a que funcione bien en iExplorer
        
e.cancelBubble true;
        
e.returnValue false;
        
e.retainFocus true;
    }

    
//e.stopPropagation works in Firefox.
    
if (e.stopPropagation) {
        
e.stopPropagation();
        
e.preventDefault();
    }
    return 
false;
}

function 
tecla(i,idee){
    
pararPropagacionEvento(ee);
    if(
isCtrl){ 
        
top.putClipboard(i,document.getElementById(id).value); 
        
isCtrl=false;
        return 
false;
    }else{
        if (
top.getClipboard(i)){
            
document.getElementById(id).value top.getClipboard(i);
        }
        return 
false;
    }

Un saludo de,
eContento
__________________
eContento
- Mis artículos y tutoriales
- Mis jsfiddles