Ich arbeite derzeit in einem Drittanbieter-Software-Formularsystem, mit dem Benutzer ein Bild hochladen können.onChange-Ereignis wird nicht ausgelöst
Was ich versuche zu erreichen, ist auf den Upload-Bereich ändern, um das Exif des Bildes zu greifen und eine Warnung seiner Informationen anzuzeigen. (Mit dem Plan, die lat und lng zu greifen ist, wenn ich das tun kann.)
Ich habe die aktuellen JS in meinem Dokument bereit
$.getScript('http://WIN-VEQPNOG6JPR/Forms/js/exif.js', function() {
document.getElementsByClassName("uploadArea").onchange = function(e) {
EXIF.getData(e.target.files[0], function() {
alert(EXIF.pretty(this));
});
}
});
Die Struktur für das erzeugte Formular unten aussieht. Meine erste Vermutung ist, dass der Bereich, den ich im Formularersteller definiert habe, falsch ist oder ich finde ihn einfach nicht. Die Datei ist in der tr-Klasse-Datei eingebettet, dann eine andere td, aber ich hatte versucht, den gesamten Abschnitt uploadArea zu nennen.
Das Bild beim Hochladen sieht aus wie "<a class="ellipsis" title="img_1771.jpg">img_1771.jpg</a>"
Irgendwelche Ideen?
Fehlermeldung:
Uncaught TypeError: Cannot read property 'exifdata' of undefined
at imageHasData (exif.js?_=1496235241982:339)
at Function.EXIF.getData (exif.js?_=1496235241982:936)
at HTMLLIElement.document.getElementsByClassName.onchange (0:192)
Versuchen Sie 'getElementsByClassName (" uploadArea ") zu ändern. Onchange ...' to 'getElementsByClassName (" uploadArea ") [0] .onchange ...' da 'getElementsByClassName' das Array zurückgibt. – abhishekkannojia
@abhishekkannojia 'getElementsByClassName' gibt NodeList nicht ein Array zurück – NightKn8
@ NightKn8 Yup, Sie haben Recht, NodeList ist eine Array-ähnliche Struktur. Zur Vereinfachung habe ich einfach Array geschrieben. – abhishekkannojia