• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Drag von Grafiken verhindern

Status
Für weitere Antworten geschlossen.

Snork

Neues Mitglied
Hallo zusammen,

folgendes: Ich habe mir ein Javascript gebastelt, womit ich Grafiken mit der Maus auf dem Bildschirm verschieben kann, dh. so eine Art Drag & Drop. Das Problem ist jetzt (zumindest bei Firefox), dass man Grafiken "ziehen" kann, was das Verschieben per Javascript verhindert. (Wer nicht weiss, was damit gemeint ist: Einfach mal mit der Maus versuchen auf irgendeiner Homepage eine Grafik woanders hinzuziehen). Um das zu umgehen habe ich das so gemacht, dass man das nur mit der rechten Maustasteverschieben kann. Dann hatte ich allerdings das Problem, dass immer das Kontextmenü auftaucht, was genauso stört. Das hab ich dann mit oncontextmenu="return false" verhindert, was aber wiederum nicht beim Opera funktioniert...

Kann man das nun irgendwie umgehen? Das Rechtsklickmenü auch bei Opera deaktivieren oder das Dragging von Grafiken im Firefox verhindern?
Bei Google Maps haben die das ja auch irgendwie hingekriegt: Google Maps

Ob man die Grafiken nun mit der linken oder rechten Maustaste verschiebt ist mir letztendlich egal, es sollte nur browserübergreifend funktionieren.

Wenn man die Grafik als Hintergrundbild einblendet funktioniert es zwar, aber leider kann ich das anderen technischen Gründen nicht so machen.

MfG
Snork
 
Ich würde vermuten, dass ein "return false" nach Deiner eigenen Abarbeitung Wunder wirkt.
 
mh, also ich hab jetzt mal bei allen Funktionen ein return false rangehängt, das funktioniert aber immer noch nicht. Ich bin mit Javascript noch nicht ganz so bewandert, hab deswegen mal das Beispiel von selfhtml genommen:

HTML:
<script type="text/javascript">
<!-- gueltig fuer Netscape ab Version 6, Mozilla, Internet Explorer ab Version 4

//Das Objekt, das gerade bewegt wird.
var dragobjekt = null;

// Position, an der das Objekt angeklickt wurde.
var dragx = 0;
var dragy = 0;

// Mausposition
var posx = 0;
var posy = 0;


function draginit() {
 // Initialisierung der Überwachung der Events

  document.onmousemove = drag;
  document.onmouseup = dragstop;
    return false;
}


function dragstart(element) {
   //Wird aufgerufen, wenn ein Objekt bewegt werden soll.
  dragobjekt = document.getElementsByName(element)[0];

  dragx = posx - dragobjekt.offsetLeft;
  dragy = posy - dragobjekt.offsetTop;

    return false;
}


function dragstop() {
  //Wird aufgerufen, wenn ein Objekt nicht mehr bewegt werden soll.

  dragobjekt=null;

      return false;
}


function drag(ereignis) {
  //Wird aufgerufen, wenn die Maus bewegt wird und bewegt bei Bedarf das Objekt.

  posx = document.all ? window.event.clientX : ereignis.pageX;
  posy = document.all ? window.event.clientY : ereignis.pageY;
  if(dragobjekt != null) {

    dragobjekt.style.left = (posx - dragx) + "px";
    dragobjekt.style.top = (posy - dragy) + "px";

  }
    return false;
}

//-->
</script>
War das so in etwa gemeint?
 
Nein, nicht in der Funktion selber, sondern da, wo Du es aufrufst.
Der Code fehlt hier. So dass nach dem Aufruf der Funktion nichts anderes mehr abgearbeitet wird.
 
Danke, hat geklappt :smile:

Allerdings habe ich noch ein weiteres Problem:

Auf dem Bild befindet sich eine Imagemap, d.h. Links, auf die man klicken kann.

Wenn ich das Bild verschiebe klicke ich ja mit der Maus darauf und halte sie gedrückt, bis ich sie woanders wieder loslasse.

Wenn da jetzt aber so ein Link ist, öffnet sich dieser sofort und man kann das Bild nicht mehr verschieben.

Soll heissen, der Link soll sich nur öffnen, wenn ich das Bild nicht gerade verschiebe (beim Verschieben ist die Maustaste länger gedrückt), sondern nur einmal kurz klicke.

Irgendwelche Ideen?

Vielleicht überprüfen, ob sich die Mausposition geändert hat?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben