2013-02-01 21 views
13

Eventuali duplicati:
Check if image exists with given url using jquery
Change image source if file existsVerificando immagine non esiste utilizzando JavaScript

sto gettando il valore di un percorso di immagine da una casella di testo in boxvalue e desidera convalidare se l'immagine esiste usando javascript.

var boxvalue = $('#UrlQueueBox').val(); 

ho passato in rassegna StackOverflow e abbiamo trovato l'qui sotto per ottenere la larghezza dell'immagine/altezza, ma non vogliono utilizzare questo.

var img = document.getElementById('imageid'); 

Come si può convalidare se è davvero un'immagine dal percorso dell'immagine?

+4

Guarda questa discussione: http : //stackoverflow.com/questions/5678899/change-image-source-if-file-exists –

+0

@FelipeOriani Questo è quello di creare una nuova immagine. – X10nD

+0

Qual è esattamente la tua domanda? Non vedo alcun punto interrogativo nel tuo post ... – maerics

risposta

47
// The "callback" argument is called with either true or false 
// depending on whether the image at "url" exists or not. 
function imageExists(url, callback) { 
    var img = new Image(); 
    img.onload = function() { callback(true); }; 
    img.onerror = function() { callback(false); }; 
    img.src = url; 
} 

// Sample usage 
var imageUrl = 'http://www.google.com/images/srpr/nav_logo14.png'; 
imageExists(imageUrl, function(exists) { 
    console.log('RESULT: url=' + imageUrl + ', exists=' + exists); 
}); 
+0

Questo test crea una nuova immagine che viene salvata in Risorse -> Immagini nel browser Google Chrome indipendentemente dal fatto che l'url sia o meno un'immagine valida che non mi piace particolarmente. –

+1

Questo è fantastico, ma puoi farlo per restituire l'URL? Ho un ciclo che tenta di caricare un'icona per un elenco e ho bisogno di qualcosa che restituisca l'URL che hai provato o un URL predefinito se l'immagine non esiste. Tutte le soluzioni sembrano eseguire codice o dump sulla console. – chazthetic

5

È possibile creare una funzione e controllare la proprietà complete.

function ImageExists(selector) { 
    var imageFound = $(selector); 

    if (!imageFound.get(0).complete) { 
     return false; 
    } 
    else if (imageFound.height() === 0) { 
     return false; 
    } 

    return true; 
} 

e chiamare questo funciton

var exists = ImageExists('#UrlQueueBox'); 

stessa funzione con l'URL al posto di un selettore come parametro (il tuo caso):

function imageExists(url){ 

    var image = new Image(); 

    image.src = url; 

    if (!image.complete) { 
     return false; 
    } 
    else if (image.height === 0) { 
     return false; 
    } 

    return true; 
} 
+1

Può essere eseguito senza #selector o #Id. Lo voglio direttamente dal percorso. – X10nD

+0

funzionerà su tutti i browser, perché funzionerà se l'immagine che è già stata caricata viene memorizzata nella cache. e così la creazione di una nuova immagine, caricherà solo quella già memorizzata nella cache. Ma se quel processo fallisce, allora fallirà, è il caso quando la cache è disabilitata. Comunque una buona funzione. –