¿Cómo llego clientX y clientY para trabajar dentro de mi “arrastre” controlador de eventos en Firefox?

StackOverflow https://stackoverflow.com/questions/887316

Pregunta

Mozilla Firefox 3.x parece tener un error cuando se escucha evento "ondrag". El objeto de evento no informa de la posición del objeto que se arrastra, clientX, clientY y otras compensaciones de pantalla se ajustan a cero. Esto es muy problemático, ya que quería hacer un elemento de proxy basado en el elemento arrastrado y usar, por supuesto, clientX y clientY para ajustar su posición.

Sé que hay cosas interesantes en torno tales como setDragImage en HTML5 pero quiero proporcionar una abstracción genérica para DD nativa entre los navegadores.

código defectuoso:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);

Nota: Este problema no ocurre en otros eventos (dragstart, dragover) y los eventos mousemove no puede ser capturado mientras se arrastra algo.

Por favor, ayuda!

¿Fue útil?

Solución

he encontrado una solución, he colocado un oyente en el evento "dragover" a nivel de documento, ahora consigo el derecho propiedades X y que puedo exponer a través de un objeto compartido a nivel mundial.

Otros consejos

El evento de arrastre en HTML 5 no es completamente funcional en el actual navegadores. Para simular una situación n de arrastrar y soltar que puedes usar:

  1. Añadir un evento onMouseDown, el establecimiento de una verdadera var.
  2. Añadir un evento onmouseup, el establecimiento de esa falsa var.
  3. Añadir un evento onmousemove, comprobando si eso var es cierto, y si lo es, mover el div de acuerdo a las coordenadas.

Esto siempre ha trabajado para mí. Si se enfrentan a algún problema, ponerse en contacto de nuevo, puedo proporcionar algunos ejemplos.

buena suerte!

  

Sé que hay cosas interesantes en torno   como setDragImage en HTML5 pero   desee proporcionar una abstracción genérica   para DD nativa entre los navegadores.

Pero por qué hacer algo como esto, no hay bibliotecas como jQuery y Prototipo disponible para el navegador cruz de arrastrar y soltar?

O de lo contrario, si se desea implementar una biblioteca DD de su cuenta, usted puede tomar la ayuda de sus métodos o ampliarlos, ya que tanto las bibliotecas están siguiendo el paradigma orientado a objetos.

Esto le ahorrará mucho tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top