Comment silencieusement cacher “Image not found” icône lors de la src de l'image source n'est pas trouvé
Savez-vous comment masquer la classique “Image not found” icône à partir d'un rendu HTML de la page lorsqu'un fichier image n'est pas trouvé?
Toute méthode de travail à l'aide de JavaScript/jQuery/CSS?
- Andy réponse est correcte, cependant, vous pouvez utiliser le style.vsibility à la place. Si vous définissez la visibilité, l'élément conserve encore sa place sur votre document, donc pas drôle document mouvements.
- Je ne vois pas l'intérêt. Vous n'êtes pas censé pour essayer d'atteindre aucun de ressources à partir de votre code html. L'utilisation de javascript pour cacher la mauvaise thématiques ressources semble être une vilaine solution pour moi.
- Il vous manque le point.Il y a beaucoup de avec des liens directs images cassé ici, sur un Débordement de Pile en raison du fait que les images peuvent être disponibles au moment de la poste, mais indisponible quelques mois plus tard. Ces images sont silencieusement et doucement cacher.
- images brisées posté dans questions montrent l'icône d'image brisée pour moi. Je l'ai juste testé.
- Ne serait-il pas le genre de vérifier serverside, que les images existent toujours et à agir de la bonne façon afin de ne pas faire le client d'envoyer inutile s'agit des requêtes http ?
- uhm..navigateur? J'utilise FF 3.6.3 et brisé les images sont caché. J'ai essayé IE 8.0 et brisé l'image des icônes affichées à l'écran :S
- J'ai testé sous IE et Google Chrome. Il est possible de Firefox cache les images sur son propre si ils ont un vide
alt
attribut. btw, avez-vous un lien à la question que vous avez vérifié? - assurez-vous .. superuser.com/questions/52671/...
- la même page en utilisant StackPrinter (je suis l'auteur) montre les liens cassés sur FF 3.6.3 . C'est la raison pourquoi j'ai posé cette question :). stackprinter.appspot.com/...
- Je ne sais pas pourquoi les deux sont traités différemment. j'ai testé une image brisée dans Firefox et Chrome, elle ne s'affiche dans Firefox, mais il montre aussi cassé dans google Chrome. C'est clair que c'est quelque chose de Firefox est de décider de son propre, car il ne semble pas que tous les styles sont les affectent. btw, un grand travail sur StackPrinter.
- J'ai trouvé un peu plus d'informations sur comment faire Firefox fonctionne avec le présent. Voir un mise à jour de violon et le [propriétaire pseudo-classe,
:-moz-broken
](developer.mozilla.org/en/CSS/:-moz-broken). Je viens de penser à moi-même plus tôt qu'une pseudo classe serait utile pour le style d'images brisées. - merci pour les conseils et pour le +1 là-bas :).
- pas de problème 🙂
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
onerror
des événements en JavaScript pour agir quand une image ne se charge pas:En jQuery (puisque vous l'avez demandé):
Ou pour toutes les images:
Vous devez utiliser
visibility: hidden
au lieu de.hide()
si vous cachez les images peuvent changer la mise en page. De nombreux sites sur le web, utiliser une valeur par défaut "aucune image" de l'image au lieu de cela, en soulignant lasrc
attribut de l'image lorsque la localisation de l'image n'est pas disponible.$("img").error(function () { /*...*/ });
.error
" boundable aveclive()
oudelegate()
.live
lier laerror
événement.live()
etdelegate()
pour des événements personnalisés, les événements de la bulle et des événements qui ne sont pas de bulle mais qui ont un bouillonnement d'alternative. Cochez la case [ mises en garde ](api.jquery.com/live/#caveats) la section de la documentation.visibility
serait mieux, cardisplay
peut casser la mise en page.visibility
serait plus utile. De nombreux sites sur le web pour ne pas, au lieu de permutation de l'image pour un défaut, "pas d'image" de l'image.$.ajaxSetup({complete: function() { $("img").error(function () { $(this).css({visibility:"hidden"}); });} });
De faire une recherche rapide sur Andy E's réponse, il n'est pas possible de
live()
liererror
.De sorte que vous avez à aller comme
directement de liaison de la
error event handler
sur la création d'un nouvel élément.error
. Sonne comme unnice to have
pour moi.Il peut être un peu en retard pour répondre, mais voici ma tentative.
Lorsque j'ai fait face à la même question, j'ai fixé à l'aide d'un div de la taille de l'image & réglage de l'image de fond d'écran de cette div. Si l'image n'est pas trouvée, la div est rendu transparent, de sorte que son tout à fait en silence sans java-script code.
Pour masquer chaque image d'erreur, il suffit d'ajouter ce code JavaScript au bas de votre page (juste avant la balise de fermeture body):
J'ai légèrement modifié solution proposée par Gary Willoughby, car elle explique brièvement image brisée. Ma solution:
Dans ma solution image est caché à l'origine et est affiché uniquement quand il est chargé avec succès. Il a un désavantage: les utilisateurs ne verront pas halfloaded images. Et si l'utilisateur a désactivé le JS alors il ne sera plus jamais voir toutes les images
<img src="..." onerror="this.style.display = 'none'"/>
pourrait fonctionner mieux pour les demi-chargé et de non-js navigateur cas?j'ai trouvé une chouette méthode pour faire exactement cela, tout en étant toujours en état de fonctionnement lors de l'utilisation de
ng-src
directive Angular.js et comme...en gros, c'est un plus court GIF transparent (comme on le voit
http://proger.i-forge.net/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80/%5B20121112%5D%20The%20smallest%20transparent%20pixel.html )
bien sûr, ce gif pourrait être gardés à l'intérieur de certains variable globale afin de ne pas gâcher les modèles.
et l'utilisation
etc.
Suffit d'Utiliser css simple