Frage

Mozilla Firefox 3.x scheint einen Fehler zu haben, wenn ein Ereignis auf „ondrag“ hören. Das Ereignisobjekt nicht die Position des Objekts berichtet gezogen wird, clientX, clientY und anderer Bildschirm Offsets werden alle auf Null gesetzt. Das ist ziemlich problematisch, da ich ein Proxy-Element basierend auf dem Elemente in der Länge gezogen und unter Verwendung von natürlich clientX und clientY um seine Position einzustellen.

machen wollte

Ich weiß, dass es cool stuff um wie SetDragImage in HTML5, aber ich mag eine generische Abstraktion für native DD zwischen den Browsern zur Verfügung zu stellen.

Fehlerhafte Code:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);

Hinweis: Dieses Problem tritt nicht auf andere Ereignisse (drag, dragover) und die mousemove- Ereignisse können nicht erfasst werden, während somethin ziehen.

Bitte helfen Sie!

War es hilfreich?

Lösung

ich eine Lösung gefunden, habe ich einen Zuhörer auf dem „dragover“ Ereignis auf Dokumentebene gelegt, jetzt habe ich das Recht, X und Y Eigenschaften erhalten, die ich durch ein global gemeinsames Objekt aussetzen kann.

Andere Tipps

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

  1. Fügen Sie ein onmousedown Ereignis, das Setzen eines var wahr.
  2. Fügen Sie ein onmouseup Ereignis, dass var false setzen.
  3. Fügen Sie ein onmousemove Ereignis, zu überprüfen, ob das var wahr ist, und wenn es ist, bewegen Sie die div nach den Koordinaten.

Dies ist immer für mich gearbeitet. Wenn Sie irgendwelche Probleme haben, wieder in Kontakt treten, kann ich einige Beispiele.

viel Glück!

  

Ich weiß, dass es cool stuff um   wie SetDragImage in HTML5, aber ich   möchte eine generische Abstraktion schaffen   für native DD zwischen den Browsern.

Aber warum so etwas tun, sind nicht dazu da Bibliotheken wie JQuery & Prototype für Cross-Browser per Drag & Drop?

Oder wenn Sie eine DD Bibliothek Ihrer eigenen implementieren möchten, können Sie die Hilfe ihrer Methoden nehmen oder sie verlängern, da beide die Bibliotheken objektorientierte Paradigma folgen.

Das wird viel Zeit sparen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top