Voglio mostrare l'anteprima di un'immagine prima che venga caricata. Ho trovato una soluzione parziale che funziona per ie6 e firefox, e non ha ancora testato in ie7 o ie8. Ma voglio una soluzione che funzioni in safari, ie7 e ie8 pure. Ecco la soluzione ottenuta combinando la soluzione ie6 e firefox:come visualizzare l'anteprima di un'immagine prima del caricamento in vari browser
function preview(what) {
if(jQuery.browser.msie) {
document.getElementById("preview-photo").src=what.value;
return;
}
else if(jQuery.browser.safari) {
document.getElementById("preview-photo").src=what.value;
return;
}
document.getElementById("preview-photo").src=what.files[0].getAsDataURL();
// alert(jQuery("#preview-photo").height());
// alert(jQuery("#preview-photo").width());
var h = jQuery("#preview-photo").height();
var w = jQuery("#preview-photo").width();//assuming width is 68, and height is floating
if ((h > 68) || (w > 68)){
if (h > w){
jQuery("#preview-photo").css("height", "68px");
jQuery("#preview-photo").css("width", "auto");
}else {
jQuery("#preview-photo").css("width", "68px");
jQuery("#preview-photo").css("height", "auto");
}
}
}
La parte getAsDataURL() funziona in Firefox, e il "src = what.value" parte funziona in IE6, ma quello funzionerebbe in safari, e "src = what.value" funziona anche in ie7 e ie8? In caso contrario, c'è qualche soluzione che funziona anche lì? Sarò felice se riesco a far funzionare l'anteprima dell'immagine in 5 o 6 browser. Se non lo è, allora è l'unica opzione per avere due moduli con la parte di caricamento di immagini di un altro modulo?
Non è vero. La nuova API di file HTML5 ha esattamente questo scopo. Protegge completamente il percorso del file, e devi leggere tutti i dati attraverso un FileReader –
Nota questa risposta ha 3 anni. – Ash