Foros del Web » Programando para Internet » Javascript »

Como saber la posicion del raton al pulsar un enlace

Estas en el tema de Como saber la posicion del raton al pulsar un enlace en el foro de Javascript en Foros del Web. Hola, quiero saber las coordenadas del raton al pulsar un enlace. Para detectar el evento onclick yo utilizo esta funcion: Código: function detectaEventos(evento,funcion,element){ var elemento ...
  #1 (permalink)  
Antiguo 16/09/2009, 15:20
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Como saber la posicion del raton al pulsar un enlace

Hola, quiero saber las coordenadas del raton al pulsar un enlace. Para detectar el evento onclick yo utilizo esta funcion:
Código:
function detectaEventos(evento,funcion,element){
			var elemento = document.getElementById(element);
			if (elemento.addEventListener) {        
		elemento.addEventListener(evento,funcion,false); 
		} else {        
		elemento.attachEvent("on"+evento,funcion);   
		
		}
	}
La cual la llamo desde con esta sentencia:
Código:
detectaEventos("click",aaaa,"aCerrar");
donde aaaa es la funcion que llamo al detectar el evento onclick y aCerrar es el enlace.

Que codigo debo incluir en la funcion aaaa() para que me de las coordenas del raton en el momento de pulsar?

He intentado con event.clientX y event.clientY averiguar las coordenadas pero siempre me dice que event is undefined y no se me ocurre cono conseguirlo.

Alguna idea?
  #2 (permalink)  
Antiguo 16/09/2009, 15:27
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: Como saber la posicion del raton al pulsar un enlace

te dice que event es undefined, salvo en iexplorer, porque tienes que crear un argumento en la funcion para recoger ese objeto. o sea,
Código:
function aaaa(event){
...
// ahora puedes usar event;
}
en los navegadores que siguen los estandar, cuando el evento ocurre este pasa el objeto event a la funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 16/09/2009, 16:09
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Como saber la posicion del raton al pulsar un enlace

Hola

Aparte de lo que te dice zerokilled, no se si tienes la función para saber donde se produjo el evento

Código javascript:
Ver original
  1. PosElemento (element)  {
  2.       if (typeof element == "string")
  3.         element = info.captura_objeto(element)
  4.             if (!element) return { top:0,left:0 };
  5.           var y = 0;
  6.           var x = 0;
  7.               while (element.offsetParent) {
  8.                     x += element.offsetLeft;
  9.                     y += element.offsetTop;
  10.                 element = element.offsetParent;
  11.       }
  12.       return {top:y,left:x};
  13.  
  14. }
  15.  
  16. alert("Left - " +PosElemento(id).left+ " Top - " + PosElemento(id).top);

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 17/09/2009, 00:43
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Respuesta: Como saber la posicion del raton al pulsar un enlace

Gracias a los dos por la respuesta.

Adler, es funcion si la consegui y pensaba que me resolveria la papeleta pero la he probado y no se si es por que los enlaces los tengo en una tabla pero top siempre me da 0, es como si cojiera la distancia desde la celda a la celda de arriba porque si le asigno otro objeto si que me da la distancia correcta en pixeles, pero si pongo el id de cualquier elemento de la tabla donde estan los enlaces me da siempre 0. Esta noche volvere a probar a ver.

Zerokilled, esta noche probare loque dices . Tu recomendacion es que haga lo siguiente para llamar a la funcion :

detectaEventos("click",aaaa(event),"aCerrar");

Espero que funcione porque ayer llamaba a la funcion asi y no me funcionaba, no esperaba a que se produjera el evento, sino que una vez llamaba a la funcion detectaEventos me lanzaba la funcion aaaa(): (el nombre de la funcion con los parenteis "()" )

detectaEventos("click",aaaa(),"aCerrar");

Para que funcione la tuve que dejar sin los parentesis, por eso no se si al poner aaaa(event) me pasara lo mismo que me pasaba antes.

Gracias a los dos esta noche lo pruebo.

Salu2



detectaEventos("click",aaaa(),"aCerrar");
  #5 (permalink)  
Antiguo 17/09/2009, 01:40
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: Como saber la posicion del raton al pulsar un enlace

me referia a que declares la funcion con un argumento, aunque realmente no es necesario porque tambien puedes usar arguments[0] para leer el objeto event. si haces lo que mostrastes, no te funcionara porque estas llamando a la funcion en lugar de pasar una referencia de él. analiza como ejemplo lo siguiente,
Código:
window.addEventListener("click", function(evt){
alert("x: " + evt.clientX + "\ny: " + evt.clientY);
}, false);
en este ejemplo la funcion anonima tiene declarado un argumento que se llama evt. este argumento pasa a ser un objeto que tiene informacion acerca del evento ocurrido. y como veras, dentro de la funcion utilizo evt para leer las propiedades clientX y clientY. a eso me referia lo que tenias que hacer, que en tu funcion declares un argumento o bien utilices arguments[0] dentro del cuerpo para leer el objeto.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 17/09/2009, 10:34
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 18 años, 1 mes
Puntos: 56
Respuesta: Como saber la posicion del raton al pulsar un enlace

Código javascript:
Ver original
  1. function detectaEventos(doc,e,fn){
  2.             if (window.attachEvent) {
  3.                 doc.attachEvent("on" + e, fn);
  4.             }else{
  5.                 doc.addEventListener(e, fn, false);
  6.             }
  7.         }
  8.  
  9.         function detectaLinks(event){
  10.         var e = event;
  11.         var el = e.target ? e.target : e.srcElement;
  12.             if(typeof el.href != "undefined"){
  13.                 var ie  = document.all, Net = document.getElementById && !ie,
  14.                 compacT = (document.compatMode && document.compatMode!="BackCompat")
  15.                 ? document.documentElement : document.body;
  16.                
  17.                 var curX = Net ? e.pageX : e.clientX + compacT.scrollLeft;
  18.                 var curY = Net ? e.pageY : e.clientY + compacT.scrollTop;
  19.                 alert("Link: "+ el.href +" X: " + curX + " Y: " + curY);
  20.             }
  21.         }
  22.        
  23.         detectaEventos(document,"click",detectaLinks);

Código HTML:
<body>
<a href="#">Link 1</a>
<a href="http://google.com">Link 2</a>
<a href="#">Link 3</a>
<span>No Link</span>
</body> 
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #7 (permalink)  
Antiguo 20/09/2009, 05:38
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Respuesta: Como saber la posicion del raton al pulsar un enlace

Gracias a todos, Zerokilled funciona prefectamente.

Saludos
  #8 (permalink)  
Antiguo 20/09/2009, 10:55
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 18 años, 1 mes
Puntos: 56
Respuesta: Como saber la posicion del raton al pulsar un enlace

Cita:
Iniciado por pepepercebe Ver Mensaje
Gracias a todos, Zerokilled funciona prefectamente.

Saludos
Te funcionó en IE?
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:36.