Estoy trabajando en una aplicación web donde soporto arrastrar en la página, simplemente observando los eventos mousedown/mousemove/mouseup. Esa parte funciona genial.HTML DOM drag-n-drop: ¿qué pasa cuando el mouse sale de la ventana?
El problema es que solo estoy manipulando el arrastre dentro de un elemento en particular, por diseño, y si un usuario (accidentalmente o no) se arrastra afuera, se "atasca" en el modo de arrastre. Es decir, mouse-down, luego mouse-leaves-window, luego mouse-up, luego mouse-returns a window parece que todavía está arrastrando, a mi aplicación.
No he encontrado ninguna forma de resolver esto, incluso algo tan simple como "cuando el mouse vuelve a entrar en la ventana, ¿el botón del mouse está hacia abajo?" trabajaría.
¿Existe tal funcionalidad y me falta? ¿O hay alguna solución inteligente que pueda emplear aquí?
El soporte heredado no tiene importancia para mí, si se trata de una solución HTML5 que solo funciona en FF3.5/Chr4/Sf4, estoy contento con eso.
No es una mala idea, pero he intentado algo como esto, y no estoy seguro de que sea mejor que quedarme atascado en el modo de arrastre. Cuando arrastre hacia atrás en el área, no puedo encontrar la manera de detectar "está el botón del mouse", por lo que debe asumir que el botón del mouse está arriba. Como básicamente estoy permitiendo que el usuario dibuje en un área (¡supongo que debería haber mencionado eso!), Si/cuando sales un poco del área, pierdes tu resistencia. Supongo que la mitad del tiempo el usuario querrá seguir arrastrando, y la mitad del tiempo querrán seguir sin arrastrar, y esto siempre es así (no en lugar de arrastrar siempre). – Ken
¿Qué sucede si coloca el controlador onmouseup en un div de nivel superior? De esta forma, solo podría comenzar un arrastre dentro del elemento que está dibujando, pero podría detener un arrastre desde cualquier lugar. Si comenzaba un arrastre, salía del área de dibujo y soltaba el mouse, el arrastre se detenía y era necesario reiniciar el arrastre desde el área de dibujo. ¿Es ese el comportamiento que estás buscando? –