5 Stimmen

Warum wird onMouseUp nicht ausgelöst?

Ich habe ein div, mit einem onMouseUp-Ereignis festgelegt (in HTML). Innerhalb dieses div gibt es viele Elemente, von denen einige Symbole für Griffe enthalten, die ich ziehen möchte. Die Symbole haben ein onMouseDown-Ereignis.

Wenn ich die Maus auf ein Symbol fallen lasse und sie loslasse, wird zuerst das onMouseDown-Ereignis des Symbols ausgelöst, dann das onMouseUp-Ereignis des Divs - genau wie ich es erwarten würde.

Allerdings, wenn ich auf das Symbol klicken, ziehen Sie es zu einem anderen Teil des div, und loslassen, die mouseDown-Ereignis ausgelöst wird, wie Sie erwarten würden, und die onmouseUp-Ereignis wird nicht ausgelöst.

Ich habe zwei Fragen.

1) Warum ist dieses Verhalten so?

2) Was ist der richtige Weg, um Drag-Drop browserunabhängig zu handhaben?

Ich verwende Firefox 3.6.16 unter Widgets, aber der IE 8 verhält sich genauso.

0voto

silkcom Punkte 482

Ich weiß, dies scheint nicht wie es ist eine faire Antwort, aber die beste Antwort (meiner Meinung nach) ist, etwas wie jQuery und verwenden Sie Draggable verwenden. Ich habe nur mit Dojo und jQuery gearbeitet, aber beide haben eine einfach zu bedienende Drag/Drop-Schnittstelle, die browserunabhängig ist.

Hier ist eine URL, die jQuery's erklärt.

http://jqueryui.com/demos/draggable/

0voto

Roy J Punkte 40912

Ich ringe gerade heute mit dieser Frage. Es gibt eine schöne Demo unter http://www.brainjar.com/dhtml/drag/demo.html die rohes Javascript verwendet (mit allen Browserprüfungen, die das mit sich bringt). Es sieht aus wie der Schlüssel ist, um die Ereignisfortpflanzung auf das Mousedown-Ereignis zu stoppen.

Ich arbeite mit Dojo, und mit dojo.stopEvent in der dragStart (das heißt, die Funktion, die mousedown angehängt ist) machte den Unterschied in meinem sehen die mouseup.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X