• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

DHTML --> Drag & Drop ... umschreiben

jorel

New member
Hallo Leute.

Gibt es eine Möglichkeit das Drag & Drop Script im Bereich DHTML so umzuschreiben das man an jeder Position den Layer schnappen kann, ohne das es hin und her springt weil man den Layer nicht oben links genommen hat!? Wenn man ihn nämlich woanders nimmt, verändert er seine Position so, das die linke obere Ecke bei der Maus liegt. Das soll er eben nicht machen ...

Hoffe das Problem ist einigermassen plausibel.

http://www.jswelt.de/v2/inc/showsource.php?id=987405027

<style>
.draggableElement {
position: absolute;
}
#d1 {
border: 2px solid green;
}
#d2 {
top: 0px; left: 300px;
}
</style>
<script>
var selectedElement;

function findDraggableElement (target) {
if (document.layers) {
if (target.constructor == Document) {
for (var l = 0; l < document.layers.length; l++)
if (target == document.layers[l].document)
return document.layers[l];
}
else if (target.constructor == Image) {
for (var l = 0; l < document.layers.length; l++)
for (var i = 0; i < document.layers[l].document.images.length; i++)
if (target == document.layers[l].document.images)
return document.layers[l];
}
return null;
}
else if (document.all) {
do
if (target.className == 'draggableElement')
return target;
while ((target = target.parentElement));
return null;
}
else if (document.getElementById) {
do
if (target.className == 'draggableElement')
return target;
while ((target = target.parentNode));
return null;
}
}

function checkSelection (evt) {
if (document.layers) {
selectedElement = findDraggableElement (evt.target);
if (selectedElement) {
document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
document.onmousemove = drag;
document.onmouseup = stopDrag;
}
}
else if (document.all) {
selectedElement = findDraggableElement (event.srcElement);
if (selectedElement) {
document.onmousemove = drag;
document.onmouseup = stopDrag;
}
}
else if (document.getElementById) {
selectedElement = findDraggableElement (evt.target);
if (selectedElement) {
document.onmousemove = drag;
document.onmouseup = stopDrag;
}
}
}

function drag (evt) {
if (document.layers) {
selectedElement.left = evt.pageX;
selectedElement.top = evt.pageY;
}
else if (document.all) {
selectedElement.style.posLeft = event.clientX;
selectedElement.style.posTop = event.clientY;
}
else if (document.getElementById) {
selectedElement.style.left = evt.clientX + 'px';
selectedElement.style.top = evt.clientY + 'px';
}
}

function stopDrag (evt) {
if (document.layers) {
document.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP);
document.onmousemove = null;
document.onmouseup = null;
selectedElement = null;
}
else if (document.all || document.getElementById) {
document.onmousemove = null;
document.onmouseup = null;
selectedElement = null;
}
}

if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = checkSelection;

if (document.all)
document.onselectstart = document.ondragstart = function () {
return false;
};
</script>

<div id="d1" class="draggableElement">
jswelt. immwer wieder neu, immer wieder gut.
</div>
<br>
<div id="d2" class="draggableElement">
jswelt. immwer wieder neu, immer wieder gut. die 2.
</div>


Ciao, Jorel
 
Das geht, ja,

aber nur mit Netscape 4 und dann nie wieder. Es gab irgend einen Befehl mit dem man die Position des Clicks relativ zum Layer in dem er erfolgte abfragen kann, frag mich nicht welchen. Daraus könnte man dann die entsprechende Verschiebung berechnen. Ich hab so was auch mal versucht, und ich hab schon Programme für die Flächenberechnung beliebiger Polygone geschrieben, glaub mir das war einfacher.:(
 
Zurück
Oben