HTML5 Drag and Drop ist großartig für die Handhabung von Datei-Uploads. Aber wenn Sie es nur dafür verwenden, ist es gut zu wissen, ob ein bestimmtes dragenter- oder dragover-Ereignis tatsächlich Dateien enthält. Im Gegensatz zu beispielsweise dem Ziehen von ausgewählten Text.
Senden Sie das Event-Objekt an diese Funktion und sie wird die Wahrheit zurückgeben (vorausgesetzt, Sie befinden sich in einem Browser, der dies alles unterstützt)
function containsFiles(event) {
if (event.dataTransfer.types) {
for (var i = 0; i < event.dataTransfer.types.length; i++) {
if (event.dataTransfer.types[i] == "Files") {
return true;
}
}
}
return false;
}
Wie wäre es damit?
Seien Sie vorsichtig, dass
typesin Firefox eineDOMStringListist, während es in Chrome einArrayist. Sie könnentypes.indexOf("Files") !== -1verwenden, aber das funktioniert nicht mit derDOMStringList. Zu diesem Zeitpunkt können Sie genauso gut die Lösung des Autors verwenden.Eine andere Variante für ie9+
Einfachere und effizientere Version
PS: Funktioniert mit jedem Event, auch mit jQuery Event-Objekten.
Besser ist
da Firefox den Typ
Array [ "application/x-moz-file", "Files" ]hat