web-dev-qa-db-fra.com

voir si src d'img existe

lorsque je place une balise img, je crée dynamiquement l'attribut src. Existe-t-il un moyen de tester si le src (chemin où se trouve l'image) existe réellement avec javascript afin d'éviter d'obtenir:

enter image description here

27
Tono Nam

Vous pouvez utiliser l'événement error:

var im = document.getElementById('imageID'); // or select based on classes
im.onerror = function(){
  // image not found or change src like this as default image:

   im.src = 'new path';
};

Version en ligne:

<img src="whatever" onError="this.src = 'new default path'" />

Ou

<img src="whatever" onError="doSomething();" />

<img> tag prend en charge ces événements:

  • abort (onAbort)
  • error (onError)
  • load (onLoad)

Plus d'informations:

59
Sarfraz

vous pouvez effectuer un appel ajax précédent (avec la méthode head) et voir le code de retour du serveur ou vous pouvez utiliser l'événement onerror pour changer l'URL ou la masquer, par ex.

<img src="notexist.jpg" onerror="this.style.visibility = 'hidden'">

(J'ai utilisé l'attribut inline juste pour expliquer l'idée)

11
fcalderan

Si vous créez dynamiquement le src avec javascript, vous pouvez utiliser ceci:

var obj = new Image();
    obj.src = "http://www.javatpoint.com/images/javascript/javascript_logo.png";

if (obj.complete) {
    alert('worked');
} else {
    alert('doesnt work');
}