Drag & Drop - DataTransfer Objekt

8

Ich baue einen einfachen Drag-and-Drop-Uploader und frage mich, warum ich die Datei (en), die ich ablege, nicht sehen kann, wenn ich console.log(e) (DragEvent) sehe und auf das DragEvent.dataTransfer.files schaue leer, aber ... wenn ich console.log(e.dataTransfer.files) zeige, werden die abgelegten Dateien angezeigt.

// CODE

%Vor%     
Jordan Davis 29.10.2015, 16:56
quelle

1 Antwort

6

Der Datenspeicher ziehen hat je nach Zugriffsart unterschiedliche Modi:

  • Am dragstart -Ereignis ist es im Modus Lesen / Schreiben .
  • Am drop -Ereignis ist es im Modus Nur lesen .
  • Und bei allen anderen Ereignissen ist es im geschützten Modus.

    Geschützter Modus ist auf diese Weise definiert:

  

Geschützter Modus

     

Für alle anderen Ereignisse. Die Formate und Arten im Ziehdatenspeicher   Die Liste der Elemente, die die gezogenen Daten darstellen, kann aufgelistet werden, aber der   Daten selbst sind nicht verfügbar und es können keine neuen Daten hinzugefügt werden.

Siehe hier: Ссылка

Das heißt, wenn Sie auf das dataTransfer -Objekt in Ihrer Konsole zugreifen, das nicht auf drop oder dragstart event ist, befindet es sich im geschützten -Modus und verhindert den Zugriff auf die Daten.

Sie können fileList anzeigen, weil Sie das Ereignis fileList für drop protokollieren, wenn dataTransfer lesbar ist. Wenn Sie jedoch e.dataTransfer oder e protokollieren, können Sie nicht auf Daten zugreifen.

Sie können hier testen, sogar auf dragover können Sie nicht darauf zugreifen, was in dataTransfer ist:

%Vor% %Vor%
    
Julien Grégoire 02.11.2015, 23:33
quelle