Christoph Schnauß: onclick-Event blockieren

Beitrag lesen

hallo,

bei einem Linksklick auf das rote div-Element soll sich ein Kontextmenü öffnen (hier der alert).

Tut es aber nicht. Jedenfalls nicht zuverlässig. Bei gedrückter Maustaste kann man das rote Dingens verschieben - und wenn man es dabei _unter_ das grüne schiebt und die Maus wieder losläßt, passiert gar nix.

Dieses wird jetzt aber auch geöffnet wenn ich das Element beim Verschieben am Ende los lasse (mouseup).

Tut es nicht immer.

Das will ich verhindern.

Ich verstehe nicht, warum du etwas verhindern willst, was sowieso nicht zuverlässig passiert. Das einzige, was zuverlässig passiert: wenn ich die Maustaste gedrückt halte, kann ich das rote Viereck verschieben - das grüne übrigens auch. Ist ja auch ein netter Effekt.

Die Funktionalität Kontextmenü und Drag and Drop sollen unabhängig voneinander bleiben.

Achso. Das war nicht ganz deutlich bisher.

Vielleicht habt ich das jetzt wieder nicht vernünftig erklärt

Doch, jetzt wird es deutlicher - auch wenn sich der Sinn der ganzen Übung an deinem Beispiel noch nicht ganz erschließt.

Ziel ist einfach wie oben beschrieben das Auslösen des onclick-events zu verhindern, da ich den onclick-Handler nicht verändern kann weil er von einer anderen Funktion, hier dem Kontextmenü gesetzt wird.

Ich fürchte, da geht bei dir irgendwas im Verständnis der EventHandler noch ein wenig durcheinander. "onclick" ist - stark vereinfachend ausgedrückt (und in dieser Formulierung diskussionswürdig) - sowas wie eine "Zusammenfassung" anderer EventHandler. Mache dir einfach klar, was passiert, wenn ein "Benutzer" seine Maus bedient. Drückt er die Taste (egal, welche), gibt es "onmousedown". Das kannst du ausnutzen. Läßt er die Taste aber wieder los (was unweigerlich irgendwann passieren muß), gibt es "onmouseup". Beides zusammen ist halt "onclick"; wie gesagt, ich vereinfache hier sehr stark.

Was folgt für deine Programmlogik daraus?

Grüße aus Berlin

Christoph S.

--
Visitenkarte
ss:| zu:) ls:& fo:) va:) sh:| rl:|