2011-10-12 17 views
9

(sono nuovo di programmazione web, quindi mi scuso per l'eventuale mancanza di conoscenza rudimentale.)Cosa usare al posto di FileReader per Safari?

La mia pagina consente all'utente di selezionare un file che viene poi letto clientside & visualizzato in una casella di testo nella pagina. Il modo più semplice per scoprirlo era utilizzare un oggetto FileReader, che funziona bene con Firefox e Chrome.

Questo non funziona in Safari (ancora), quindi cosa dovrei fare invece?

//When the eventlistener detects a change in the input file... 
var file = evt.target.files[0] 
var reader = new FileReader(); 
reader.onload = function (e){document.getElementById('data').value = e.target.result}; 
reader.readAsText(file); 

Note rilevanti:

  • sto lavorando con Safari per Windows
  • In questo momento la pagina è locale come è il file da leggere. Chrome ha avuto problemi con questo fino a quando non ho usato il flag --allow-file-access-from-files

risposta

6

Purtroppo, l'unica risposta che riesco a fare è guadagnare una larghezza di banda extra.

In primo luogo, utilizzare qualcosa come if (typeof FileReader !== "undefined" o Modernizr per seguire il flusso normale per i browser che supportano FileReader. Altrimenti, POST il file tramite AJAX su uno script sul lato server che riecheggia il contenuto.

Quindi per i browser conformi, è possibile risparmiare una certa larghezza di banda e per i browser non conformi è necessario prenderne uno per il team.

+0

Forse questo sarebbe soddisfare il vostro bisogno però: https://github.com/dcneiner/Downloadify – Quickredfox

+0

Grazie! Sembrava sciocco, ma non sapevo quali fossero le possibilità alternative (suppongo che succeda quando sei ancora nuovo a tutto!) – Emma

+0

Mi è davvero piaciuta la tua risposta, sembra un modo reattivo di gestire queste situazioni. Grazie. –

Problemi correlati