Intento obtener la posición del mouse relativa a un elemento utilizando mousemove. Funciona bien, pero cuando el mouse se desplaza sobre un elemento secundario, las coordenadas son relativas a este elemento secundario. Quiero la posición del mouse relativa al div principal, no al hijo.Ignorar elementos secundarios en mousemove
Véase this JSFiddle por ejemplo.
var object = document.getElementsByClassName('object'),
scene = document.getElementById('scene');
function initMove() {
for(var i=0; i<object.length; i++) {
object[i].addEventListener("mousemove", function(event) {
//event.stopPropagation();
return false;
}, false);
}
scene.addEventListener("mousemove", function (event) {
//event.stopPropagation();
//event.currentTarget;
moveX = event.offsetX;
moveY = event.offsetY;
console.log(moveX + ' + ' + moveY);
}, false);
}
function init() {
initMove();
document.onselectstart = function(){ return false; }
};
init();
Añadiendo event.stopPropagation()
en niño return no hay datos. Y no estoy seguro de cómo funciona event.currentTarget
.
No puedo usar el mouseenter o cualquier otro mouse, solo controles, porque quiero que sea táctil (reemplazando mousemove por touchmove).
¿Alguna idea?
las coordenadas del mouse deben ser relativas al div principal, no a la página. Creo que event.offsetX es la única forma válida de obtener coordenadas en este caso – Julian
, si resta el desplazamiento del div principal. Estoy trabajando en un violín. Espera un minuto. – danijar
Gracias pero no respondió mi pregunta. En su ejemplo, la posición secundaria se actualiza con la posición del mouse relativa a la div principal, no es lo que quiero. Solo quiero obtener la posición del mouse relativa al div principal incluso si el mouse se mueve sobre un elemento secundario (como si el hijo no existiera). – Julian