Annahme: Eine lokale HTML / Javascript-Webseite, die Zugriff auf Datei: //
hat Wie füge ich zu Beginn eines Ziehens eines ziehbaren HTML-Elements in der Ereignishandlerfunktion Beispiel: Insbesondere muss es an Chrom / Chromium arbeiten. Und wir können davon ausgehen, dass die Datei auf dem lokalen Laufwerk existiert. Grundsätzlich möchte ich die gleichen Daten verfügbar, wenn eine Datei von Windows Explorer auf eine HTML-Seite auf einem Element gezogen wird, die ablegen kann. Ich weiß, dass dies in Chrome existiert: welches die Datei herunterlädt. Aber das ist nicht was ich will, weil ich annehmen möchte, dass dies eine existierende Datei ist und dass auf die Originaldatei zugegriffen werden muss. dragStart(e)
ein Dateiobjekt hinzu, so dass es als Datei erkannt wird und in der dataTransfer.files
-Liste?
Sie können den Ansatz von @kol unter Drop-Datei-Ereignis simulieren
verwenden >Das heißt, wir müssen ein Argument an ondrop übergeben, das
- hat ein
enthältdataTransfer
-Feld mit einemfiles
-Array-Unterfeld, das die ausgewähltenFile
und- Eine
preventDefault
Methode (eine Funktion ohne Körper wird es tun).
wird unten angepasst, um .addEventListener("drop")
an drop
element an dragstart
event anzuhängen, wobei File
Objekte an eine gebundene Funktion mit Function.prototype.bind()
übergeben werden, die das oben beschriebene Objekt zurückgibt, wobei once:true
als drittes übergeben wird Parameter zu .addEventListener()
, um drop
event höchstens einmal für jedes dragstart
-Ereignis aufzurufen, auf das File
-Objekte zugegriffen oder erstellt wurden.
FileList
Objekt ist schreibgeschützt, ein Array
wird zum Speichern von File
object verwendet bei dataTransfer.files
-Eigenschaft innerhalb eines einfachen javascript
-Objekts bei Event-Handlern.
Hinweis: Die
FileList
Schnittstelle sollte als "gefährdet" betrachtet werden seit dem allgemeinen Trend auf der Web-Plattform ist es, solche zu ersetzen Schnittstellen zu demArray
Plattformobjekt in ECMAScript [ECMA-262] . Insbesondere bedeutet dies Syntax der Sortefilelist.item(0)
ist gefährdet; die meisten anderen programmatischen Verwendung vonFileList
ist wahrscheinlich nicht von der eventuellen Migration auf eineArray
type.
Wenn event.dataTransfer.files
at dragstart
event File
-Objekte enthält, iteriere FileList
und drücke jedes File
-Objekt auf files
-Array.
plnkr Ссылка
Tags und Links javascript drag-and-drop file data-transfer data-transfer-objects