Wie bekomme ich clientX und clientY in meinem "Drag" -Ereignishandler in Firefox arbeiten?

8

Mozilla Firefox 3.x scheint einen Fehler zu haben, wenn Sie "ondrag" -Ereignis hören. Das Ereignisobjekt meldet nicht die Position des Objekts, das gezogen wird, clientX, clientY und andere Bildschirmoffsets sind alle auf Null gesetzt. Dies ist ziemlich problematisch, da ich ein Proxy-Element basierend auf dem Element ziehen wollte und natürlich clientX und clientY verwendete, um seine Position anzupassen.

Ich weiß, dass es coole Sachen wie setDragImage in HTML5 gibt, aber ich möchte eine generische Abstraktion für native DD zwischen Browsern zur Verfügung stellen.

Fehlerhafter Code:

%Vor%

Hinweis: Dieses Problem tritt bei anderen Ereignissen (Dragstart, Dragover) nicht auf und die Mauszeigerereignisse können nicht erfasst werden, während etwas verschoben wird.

Bitte helfen Sie!

    
Christophe Eblé 20.05.2009, 11:04
quelle

3 Antworten

16

Ich habe eine Lösung gefunden: Ich habe einen Listener in das "dragover" -Ereignis auf Dokumentebene gestellt, jetzt erhalte ich die richtigen X- und Y-Eigenschaften, die ich über ein global gemeinsam genutztes Objekt bereitstellen kann.

    
Christophe Eblé 23.05.2009, 20:00
quelle
1

Das Ziehereignis in HTML 5 ist in heutigen Browsern nicht voll funktionsfähig. Um eine Drag-Drop-Situation zu simulieren, sollten Sie Folgendes verwenden:

  1. Fügen Sie ein onmousedown-Ereignis hinzu und legen Sie eine Variable als wahr fest.
  2. Fügen Sie ein onmouseup-Ereignis hinzu und legen Sie var false fest.
  3. Fügen Sie ein onmousemove-Ereignis hinzu und prüfen Sie, ob diese Variable wahr ist, und wenn dies der Fall ist, verschieben Sie Ihr div entsprechend den Koordinaten.

Das hat immer für mich funktioniert. Wenn Sie Probleme haben, setzen Sie sich erneut mit mir in Verbindung, ich kann Ihnen einige Beispiele geben.

viel Glück!

    
José Leal 20.05.2009 11:14
quelle
0
  

Ich weiß, dass es coole Sachen gibt   wie setDragImage in HTML5, aber ich   möchte eine generische Abstraktion bereitstellen   für native DD zwischen Browsern.

Aber warum so etwas, sind nicht Bibliotheken wie JQuery & amp; Prototype verfügbar für cross browser drag & amp; fallen lassen?

Oder wenn Sie eine eigene DD-Bibliothek implementieren möchten, können Sie deren Methoden verwenden oder sie erweitern, da beide Bibliotheken dem objektorientierten Paradigma folgen.

Das spart viel Zeit.

    
Kirtan 20.05.2009 11:35
quelle