Foro

Evento ClientX ClientY en Firefox

0
Hola amigos tengo una duda con respecto a la captura de eventos en firefox el codigo es el siguiente
function MueveCuadrito() {
    
	if (document.getElementById("cuadrito").style.display != "block") {
	
		var EjeX=50
		var EjeY=window.event.clientY + document.documentElement.scrollTop;
		//alert(EjeX)
		document.getElementById("cuadrito").style.top= (EjeY-20)
		document.getElementById("cuadrito").style.left=(EjeX)
	}
}
EnIE si funciona ya que el clienty sirve para capturar la coordenada vertical del evento en relación a la ventana del browser , pero esto es en IE en firefox no funciona Me podrian ayudar como podria capturar la coordenada vertical pero en firefox para que funcione en los dos navegadores? Saludos Halley
0
function MueveCuadrito(event){
   event = event ? event : window.event; //estandarizando...
   //el resto de tu código....
}
Imagino que la función "MueveCuadrito" se ejecuta cuando se presiona algún elemento, si es así esta función recibe el objeto "event" que necesitas. La única línea que tienes que agregar es la que te puse en el código, con esta instrucción verificas si existe el objeto "event" si no existe significa que el navegador no cumple con los estándares y ovbiamente es IE, por lo tanto sacas el evento de donde IE lo ha definido. saludos PD: El código que pusiste en el post anterior tampoco debe funcionar en Safary, Chrome, Opera ni ningún otro explorador que cumpla con los estándares.
0
Que tal gente hace buen tiempo que no visito el foro , bueno en este caso les dejo la solucion a mi problema por si a otro le sirve
<script type="text/javascript"><!--
document.getElementById("cuadrito").style.display="none";
function CierraInf() {
	document.getElementById("cuadrito").style.display="none";
}
function captura_scroll()     {
		if(typeof window.pageYOffset !='undefined'){
		 
			return window.pageYOffset;
		}
		else {
		    
			
			return  document.documentElement.scrollTop;
	    }
 }
 
 function captura_posicion_Y(e){
 
	   if ( e.pageX || e.pageY )
	{       
	       
			return e.pageY;
	}
	else if ( e . clientX || e . clientY )
	{       
	        
			return e . clientY ;
	} 
 }
function MueveCuadrito(e) {
    
	if (document.getElementById("cuadrito").style.display != "block") {
	    var evento=window.event? event : e;
		var EjeX=50;
		
		
		
		
		var scroll_top = captura_scroll();
		var poscY=captura_posicion_Y(evento);
		
		var EjeY=poscY + scroll_top;
		//alert("IE cordenad " + EjeY + "page " + document.documentElement.scrollTop);
		//var EjeY=evento.pageY + scroll_top;
		
		//alert("FF cordenad " + EjeY);
		
		//para comprobar si es IE
		var isMSIE = /*@cc_on!@*/!1;
		//si es ie
		if(isMSIE){
		   document.getElementById("cuadrito").style.top= (EjeY-20);
		   document.getElementById("cuadrito").style.left=(EjeX);
		}else{
              document.getElementById("cuadrito").style.top= (poscY-30)+"px";
		  document.getElementById("cuadrito").style.left=(EjeX) +"px";  
		}
		
		
	}
}
function MuestraCuadrito(Nombre,Cargo,Foto,Horario,Email) {
	document.getElementById("FotoC").src="FotosPersonal/wait.png";
	document.getElementById("cuadrito").style.display="block";
	//cuadrito.style.display="block"
	document.getElementById("FotoC").src=Foto;
	document.getElementById("HorarioC").innerHTML=Horario;
	document.getElementById("EmailC").innerHTML=Email;
	document.getElementById("EmailC").href= "mailto:"+Email;
	document.getElementById("NombreC").innerHTML=Nombre;
	document.getElementById("CargoC").innerHTML=Cargo;
}
//--></script>
de esta manera funciona tanto en firefox como en ie cabe recalcar que para firefox, obtengo el valor poscY, mientras que para ie es EjeY, dicho sea EjeY=poscY + scroll_top; ya que ie tienes que aumentarle el valor del scroll sino, en firefox no es necesario Bueno eso era todo ojala esta solucion pueda ayudar a alguien si lo necesita Saludos <!-- s:D --><!-- s:D -->

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.