Moin!
Frage: Wie bekommt man relativ positionierte Elemente mit drag&drop
in den Griff?
Habe in vielen Foren gesehen, dass andere dieselben Probleme
mit drag&drop haben wie ich:
-> Verzögerung bei Bildern, ungewollte Textmarkierungen, ...
Das vielen drag-and-droppern bekannte script von Daniel Thoma
[http://aktuell.de.selfhtml.org/artikel/javascript/draganddrop/index.htm]
arbeitet mit den event handlern onmousedown und onmouseup.
Nimmt man ein paar kleine Veränderungen vor, so lassen sich
auch Bilder und Schriften tadellos draggen und droppen -
nur leider nur abs. pos. Objekte; bei rel. pos. kann es passieren, dass,
will man das Objekt droppen, dieses sich nicht "unter" dem Cursor
befindet und somit der event handler onclick nicht greift:
var dragobjekt = null;
var dragx = 0;
var dragy = 0;
var posX = 0;
var posY = 0;
function draginit() {
document.onmousemove = drag;
} // und KEIN document.onmouseup = dragstop
var busy = 0; // hinzugefügt
function dragstart(element) {
if (busy == 0) { // hinzugefügt
busy = 1; // hinzugefügt
dragobjekt = element;
dragx = posX - dragobjekt.offsetLeft;
dragy = posY - dragobjekt.offsetTop;
}
}
function dragstop() {
dragobjekt=null;
busy = 0; // hinzugefügt
}
function drag(e) {
posX = document.all ? window.event.clientX : e.pageX;
posY = document.all ? window.event.clientY : e.pageY;
if (dragobjekt != null) {
dragobjekt.style.left = (posX - dragx) + "px";
dragobjekt.style.top = (posY - dragy) + "px";
}
}
HTML:
[code lang=html
<body onload="javascript:draginit()">
<img src="bild.png"
style="position:absolute; left:50px; top:50px;"
onclick=
"if(busy==0){javascript:dragstart(this);}
else {javascript:dragstop();}"
[/code]
lieben gruß