2017-12-06 6 views
0

Der untenstehende Code funktioniert überall außer auf safri mobile. Scheinbar wird die onchange nie ausgelöst.Javascript Dateieingabe onchange funktioniert nicht [nur Safari]

// create a hidden file input element 
var input = document.createElement("input"); 
input.type = "file"; 

// when the input content changes, do something 
input.onchange = 
function(event) 
{ 
    // upload files 
} 

// Trigger file browser 
input.click(); 

Ich habe ähnliche Beispiele gefunden aber sie alle Szenarien beziehen, wo es auch eine Form von einer anderen sichtbaren Darstellung der Eingabedatei ist und sie alles Form-Clearing Abhilfen beinhalten. Das würde hier nicht funktionieren.

Dieser Code wird beim Klicken auf ein Bild aufgerufen, um ein neues als Ersatz zu laden.

Irgendwelche Hinweise? Was mache ich falsch?

+0

'onchange' wird nicht ausgelöst, bis der Client tatsächlich eine Datei oder Dateien auswählt. '.click()' funktioniert möglicherweise nicht in manchen Browsern auf ''. – PHPglue

+0

.click funktioniert überall für das, was ich testen konnte, und die Dateiauswahl wird auf Safari iOS korrekt geöffnet. Was nicht ausgelöst wird, ist onchange * nachdem * die Datei ausgewählt und der Auswahldialog geschlossen wurde. – resle

Antwort

0

ich will verdammt sein: auf iOS Safari zwei zusätzliche Bedingungen notwendig sind, um im Vergleich zu anderen Browsern:

1) Die Eingabe tatsächlich auf das DOM angehängt werden muß.

2) Einstellung .onchange funktioniert nicht: addEventListener muss stattdessen verwendet werden.

Verwandte Themen