J'essaie d'ajouter une image à une page à l'aide de JavaScript:
image = document.createElement('img');
image.onload = function(){
document.body.appendChild(image);
}
image.onerror = function(){
//display error
}
image.src = 'http://example.com/image.png';
L'utilisateur doit être authentifié pour voir cette image. S'ils ne le sont pas, je souhaite afficher un message d'erreur. Malheureusement, le serveur ne renvoie pas de message d'erreur HTTP, mais redirige plutôt la demande vers une page (généralement) vide. Je reçois donc un HTTP 200
, mais l'avertissement Resource interpreted as Image but transferred with MIME type text/html
et rien ne s'affichent.
Comment puis-je gérer ce cas? Je ne suis pas en mesure de modifier les informations fournies par le serveur Web si l'utilisateur n'est pas authentifié.
Dans l'écouteur d'événements image.onload
, vérifiez si image.width
et image.height
sont tous deux égaux à zéro (de préférence image.naturalWidth
et image.naturalHeight
, lorsqu'ils sont pris en charge).
Si la largeur et la hauteur sont égales à zéro, l'image est considérée comme non valide.
// Usage:
loadImage('notexist.png');
function loadImage(src) {
var image = new Image;
image.onload = function() {
if ('naturalHeight' in this) {
if (this.naturalHeight + this.naturalWidth === 0) {
this.onerror();
return;
}
} else if (this.width + this.height == 0) {
this.onerror();
return;
}
// At this point, there's no error.
document.body.appendChild(image);
};
image.onerror = function() {
//display error
document.body.appendChild(
document.createTextNode('\nError loading as image: ' + this.src)
);
};
image.src = src;
}
Voici ma solution. Si j'ai 404 pour mon image, j'essaie d'insérer un de mes tableaux 200 OK (pur Javascript). Les images doivent être dans le même chemin. Sinon, ma fonction renverra «no-image.png». jQuery/JavaScript pour remplacer les images endommagées