Foros del Web » Programando para Internet » Javascript »

Guardar posición del ratón respecto a la imagen sobre la que se pulsa

Estas en el tema de Guardar posición del ratón respecto a la imagen sobre la que se pulsa en el foro de Javascript en Foros del Web. He encontrado por el foro esta función hecha por troyano: function storepoint(e, objeto) { var resx=0 var resy=0 while (objeto.tagName!="BODY") { resx+=objeto.offsetLeft resy+=objeto.offsetTop objeto=objeto.offsetParent } ...
  #1 (permalink)  
Antiguo 03/08/2010, 13:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Guardar posición del ratón respecto a la imagen sobre la que se pulsa

He encontrado por el foro esta función hecha por troyano:

function storepoint(e, objeto)
{
var resx=0
var resy=0
while (objeto.tagName!="BODY")
{
resx+=objeto.offsetLeft
resy+=objeto.offsetTop

objeto=objeto.offsetParent
}
// alert((e.clientX)+', '+(e.clientY));
// alert((resx)+', '+(resy));
//alert('reales'+(e.clientX-resx)+' , '+(e.clientY-resy));
etiqX = e.clientX - resx - 10;
etiqY = e.clientY - resy + 30;
}

Sirve para guardar la posición del ratón al hacer click sobre un elemento. El problema que tengo es que si muevo el scroll de la página hacia abajo y pulso sobre la imagen, la posición guardada no es correcta. Supongo que esto guarda la posición absoluta.¿Cómo puedo retocar la función?

La llamada la realizo así:

//Detectamos cuándo el usuario pulsa sobre una foto para etiquetarla
$('.fotoEtiquetar').live('click', function(evt)
{
//Guardamos la posición de la etiqueta
storepoint(evt,this);
//Mostramos la diana de la etiqueta
var diana = $('#dianaEtiqueta');
diana.css("top",etiqY + "px");
diana.css("left",etiqX + "px");
diana.css("display","block");
});

Gracias
  #2 (permalink)  
Antiguo 03/08/2010, 13:51
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

Podés usar esto:
Código PHP:
function getPos(e){ 
    var 
ev=|| window.event
    var 
obj=ev.target || ev.srcElement
    
obj.style.position='relative';  
    
posX=ev.layerX || ev.offsetX || 0
    
posY=ev.layerY || ev.offsetY || 0
    return {
x:posX,y:posY

Ejemplos: http://disegnocentell.com.ar/notas2.php?id=252
O simplemente usar un input type image y rescatar la posición en el servidor, ejemplo (ver mapa): http://disegnocentell.com.ar/notas2.php?id=242
  #3 (permalink)  
Antiguo 04/08/2010, 07:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

panino esa función que me pones me devuelve siempre 0,0. ¿Tendrá que ver que la imagen está dentro de un overlay?

Realmente me funciona mejor la función esa que puse, con el problema que comenté.

¿Alguna idea?

Gracias
  #4 (permalink)  
Antiguo 04/08/2010, 08:11
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

No, no tiene que ver con eso. Hay que ver cómo la estás utilizando: he conocido gente que ha usado un Nonius para ajustar tuercas y se ha quejado de que no las ajustaba bien.
  #5 (permalink)  
Antiguo 04/08/2010, 08:24
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

Pues tengo esto:

//Detectamos cuándo el usuario pulsa sobre una foto para etiquetarla
$('.fotoEtiquetar').live('click', function(event)
{
//Guardamos la posición de la etiqueta
storepoint(event);
//Mostramos la diana de la etiqueta
var diana = $('#dianaEtiqueta');
diana.css("top",etiqY + "px");
diana.css("left",etiqX + "px");
diana.css("display","block");
});

y tu función:

function storepoint(e)
{
var ev=e || window.event;
var obj=ev.target || ev.srcElement;
obj.style.position='relative';
posX=ev.layerX || ev.offsetX || 0;
posY=ev.layerY || ev.offsetY || 0;
//return {x:posX,y:posY}
alert(posX + ',' + posY);
}

Gracias por la ayuda
  #6 (permalink)  
Antiguo 04/08/2010, 08:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

Cita:
Iniciado por panino5001 Ver Mensaje
he conocido gente que ha usado un nonius para ajustar tuercas y se ha quejado de que no las ajustaba bien.
:-d:-d
__________________
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;" />
  #7 (permalink)  
Antiguo 04/08/2010, 08:38
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

No tengo idea qué hace live ni lo otro que estás usando, pero así, a la antigua, funciona sin problemas:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin título</title>
<
script>
function 
getPos(e){ 
    var 
ev=|| window.event
    var 
obj=ev.target || ev.srcElement
    
obj.style.position='relative';  
    
posX=ev.layerX || ev.offsetX || 0
    
posY=ev.layerY || ev.offsetY || 0
    return {
x:posX,y:posY
}  
onload=function(){
    
document.getElementById('pp').onclick=function(e){
        var 
pos=getPos(e);
        
alert(pos.x+','+pos.y);
    }
}
</script>
</head>

<body>
<img id="pp" src="img2/1.jpg" width="500" height="332" />
</body>
</html> 
  #8 (permalink)  
Antiguo 05/08/2010, 05:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

Nada, no soy capaz a que me funcione... me devuelve 0,0

Gracias de todos modos
  #9 (permalink)  
Antiguo 06/08/2010, 02:39
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Guardar posición del ratón respecto a la imagen sobre la que se pulsa

Al final he hecho esta función para el que le interese:

function posEtiqueta(evento,contenedor)
{
var ie = navigator.userAgent.toLowerCase().indexOf('msie')! =-1;
var cont = document.getElementById(contenedor);

var posicionContenedorLeft = cont.offsetLeft;
var posicionContenedorTop = cont.offsetTop;

if(ie)
{
coordenadaX = evento.clientX + document.body.scrollLeft - posicionContenedorLeft;
coordenadaY = evento.clientY + document.body.scrollTop - posicionContenedorTop;
}
else
{
coordenadaX = evento.pageX - posicionContenedorLeft;
coordenadaY = evento.pageY - posicionContenedorTop;
}

return {x:coordenadaX - 20,y:coordenadaY - 65,dianax:coordenadaX - 5, dianay:coordenadaY - 5}
}

Etiquetas: Ninguno
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 00:19.