Wegen eines übergroßen Bildes möchte ich es im Browserfenster scrollbar machen. Scrolling sollte auf zwei Arten funktionieren: a) über Bildlaufleisten und b) durch Mausaktion. Letzteres sollte so funktionieren, als würde man das Bild in die gewünschte Richtung ziehen. Also habe ich ein Skript erstellt und an das Bild angehängt. Obwohl der Code korrekt aussieht, funktioniert er nicht richtig. Das Bild verschwindet manchmal oder springt in eine unerwünschte Position. Sie können das Skript unterImage Mover mit Javascript funktioniert nicht richtig
aufrufen und der Code angebracht ist. Kennt jemand den Grund dafür, dass das Bild springt oder verschwindet? Ich würde mich freuen, eine Antwort zu erhalten.
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<img src="schloss.jpg" id="image" />
<script>
var div=document.getElementById('image');
var iwidth,iheight,oldY,oldX,newX, newY;
var mouseisdown=false;
div.addEventListener('load', function() {
iwidth=this.naturalWidth;
iheight=this.naturalHeight;
});
function getCoordinates(elem) {
var LeftPos = elem.offsetLeft;
var TopPos = elem.offsetTop;
return {X:LeftPos,Y:TopPos};
}
function addListeners() {
div.addEventListener('mousedown', mouseDown, false);
div.addEventListener('mouseup', mouseUp, false);
window.addEventListener('mousemove', divMove, false);
var p=getCoordinates(div);oldX = p.X;oldY = p.Y;
}
function mouseUp() {
mouseisdown=false;
}
function mouseDown() {
mouseisdown=true;
}
function divMove(e){
if (mouseisdown) {
div.style.position = 'absolute';
newY=e.clientY-oldY;
newX=e.clientX-oldX;
div.style.top = newY + 'px';
div.style.left = newX + 'px';
oldY=newY;
oldX=newX;}
}
addListeners();
</script>
</body>
</html>
OK, ich habe den Code korrigiert, aber es funktioniert immer noch richtig. Gedrückt halten der Maus und Verschieben des Bildes funktioniert nicht - ich muss vorher mit der Maus klicken und danach verschieben. – JensD
@JensD, wenn Sie Ihren Code korrigiert haben, möchten Sie dies entweder als richtige Antwort markieren oder selbst eine bessere Antwort geben. – lilezek
@lilizek danke für die erste Analyse, die sehr hilfreich war. Ich komme später mit einem besseren Code zurück. – JensD