Ortwin1st
Mitglied
Hallo,
ich habe mit meinem Drag'n'Drop Script ein paar Probleme. Es geht um ein Div-Element mit den üblichen Event's onmousedown, onmousemove und onmousup. Bei diesen wird als Argument immer der 'this'-Zeiger übergeben.
Mit CSS sind mit der Eigenschaft overflow:scroll die Scrollleisten eingeblendet. Das Script funktioniert solange man nicht auf die Scrollleisten klickt. Wenn das geschieht, kann man im IE scrollen ohne das sich das Div bewegt, aber nach dem Loslassen der Maustaste bleibt das Div am Mauszeiger 'kleben'. Der Firefox löst es eleganter, indem man nur mit den Pfeilen scrollen kann.
Wie kann ich das mit dem IE lösen?
Scheinbar ignoriert der IE beim/nach dem Scrollen das 'mousedown'-event. Auf das aus der MSDN dokumentierte onscroll-Event scheint er nicht zu reagieren...
Der Code:
ich habe mit meinem Drag'n'Drop Script ein paar Probleme. Es geht um ein Div-Element mit den üblichen Event's onmousedown, onmousemove und onmousup. Bei diesen wird als Argument immer der 'this'-Zeiger übergeben.
Mit CSS sind mit der Eigenschaft overflow:scroll die Scrollleisten eingeblendet. Das Script funktioniert solange man nicht auf die Scrollleisten klickt. Wenn das geschieht, kann man im IE scrollen ohne das sich das Div bewegt, aber nach dem Loslassen der Maustaste bleibt das Div am Mauszeiger 'kleben'. Der Firefox löst es eleganter, indem man nur mit den Pfeilen scrollen kann.
Wie kann ich das mit dem IE lösen?
Scheinbar ignoriert der IE beim/nach dem Scrollen das 'mousedown'-event. Auf das aus der MSDN dokumentierte onscroll-Event scheint er nicht zu reagieren...
Der Code:
Code:
document.onmousemove=drag;
// Hier wird aktuell angeklicktes Objekt gespeichert
var drgObj=0;
// Position, an der das Objekt angeklickt wurde.
var xDrg = 0;
var yDrg = 0;
// Mausposition
var xPos = 0;
var yPos = 0;
function drgStart(src)
{
drgObj=src;
if(src)
{
xDrg = xPos - drgObj.offsetLeft;
yDrg = yPos - drgObj.offsetTop;
return false;
}
}
function drag(src)
{
xPos = document.all ? window.event.clientX : src.pageX;
yPos = document.all ? window.event.clientY : src.pageY;
if(drgObj != 0) {
drgObj.style.left = (xPos - xDrg) + "px";
drgObj.style.top = (yPos - yDrg) + "px";
}
}
function drgStop()
{
drgObj=0;
}
Zuletzt bearbeitet: