Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/07/2006, 07:29
martintnw
 
Fecha de Ingreso: enero-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
Mira, esto es algo que hice hace un tiempo cuando no conocia el AJAX asi que creo que es Javacript puro. Acepto que puede ser que no este del todo bien, pero hice lo mejor que pude y funciona...

Quizas no es exactamente lo que buscas (creo que tampoco entendi del todo el problema), pero si el tema esta en la variable Events de FF, aca te doy un ejemplo que si funciona.

Lo uso en un popup que sirve para cargar una descripcion, y al cargarse toma algunos datos de la pagina que lo creo para que, al presionar una determinada combinacion de teclas, se pueda "pegar" sin necesidad de ir a la pagina anterior, seleccionar, copiar y despues pegar en el popup. Aclaro que en su momento lo saque del amigo google, pero no recuerdo de donde viene, asi que mayormente no es credito mio

Código:
document.onkeydown = tecladown; 
document.onkeyup = teclaup;

keysDown = new Array(); //array que mantiene las teclas que estan siendo presionadas

var primera = 18; //primera tecla que hay que apretar
var segunda1 = 220; //la segunda tecla
var str1 = opener.document.f.hdn_mail.value + ' ';

var segunda2 = 49; //la segunda tecla
var str2 = opener.document.f.hdn_tel1.value + ' '; 

var segunda3 = 50; //la segunda tecla
var str3 = opener.document.f.hdn_tel2.value + ' '; 

var segunda4 = 51;
var str4 = 'fc. ' + opener.document.f.hdn_ult_fc.value + ' ';

var segunda5 = 52;
var str5 = 'fc. ' + opener.document.f.hdn_anteult_fc.value + ' ';

var segunda6 = 53;
var str6 = ' ' + opener.document.f.hdn_direccion.value + ' ';


function tecladown(Event)// Event appears to be passed by Mozilla
{
	// IE does not appear to pass it, so lets use global var
	if(Event==null)
	Event=event;

	if(Event.type!='keydown')
	return;
	
	if (keysDown[primera] != true){ //la primera
	 	if(Event.keyCode == primera){
			//grabo en ese registro que se apreto la tecla 18 (alt)
			keysDown[primera] = true;
		}
	}
	else{

		if (Event.keyCode == segunda1 || Event.keyCode == segunda2 || Event.keyCode == segunda3 || Event.keyCode == segunda4 || Event.keyCode == segunda5 || Event.keyCode == segunda6){ //la segunda tecla

			var mensaje = document.f.nota.value;
			
			var str_adic

			switch (Event.keyCode)
			{
				case segunda1: str_adic = str1; break;
							
				case segunda2: str_adic = str2; break;
			
				case segunda3: str_adic = str3; break;
				
				case segunda4: str_adic = str4; break;
				
				case segunda5: str_adic = str5; break;
				
				case segunda6: str_adic = str6; break;
			
			} 
			insertAtCursor(document.f.nota, str_adic);
			document.f.nota.focus();
			return Event.returnValue = false;
		}
		else{
		//vuelvo el estado de la tecla a falso si la segunda tecla no es ninguna de las configuradas

		return Event.returnValue = Event.keyDown;
		keysDown[primera] = false;
		
		}
	}	
}

function teclaup(Event)// Event appears to be passed by Mozilla
{
	// IE does not appear to pass it, so lets use global var
	if(Event==null)
	Event=event;

	if(Event.keyCode != primera)
	return;

	keysDown[primera] = false;

}

function insertAtCursor(myField, myValue) {
//IE support
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
	}
//MOZILLA/NETSCAPE support
	else 
		if (myField.selectionStart || myField.selectionStart == '0') {
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
		}
		else {
		myField.value += myValue;
		}
	
}
Espero que sirva. Saludos!