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){
e = e || window.event;
if(e.keyCode == 17) isCtrl=false;
}
document.onkeydown=function(e){
e = 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,id, ee){
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