Parece que hay algunas maneras de manejar imágenes rotas en una página html. Me gustaría saber qué formas tienen de uso popular y qué formas se consideran mejores prácticas.¿Cuál es la forma óptima de manejar imágenes rotas?
Para iniciar He mirado en algún mí me gustan:
function imgErr(source) {
source.src = /images/missing.jpg";
source.onerror = "";
return true;
}
<img src="test.jpg" alt="test" title="test" onerror="imgErr(this);" />
Pros: trabaja cada vez, el evento siempre será capturado. El usuario nunca ve una imagen rota. Parece funcionar bien en todos los navegadores. Contras: Etiqueta onerror requerida en cada imagen, la función imgErr (fuente) tiene que estar en la cabeza para atrapar a los errores, ralentiza los usuarios experimentaron el tiempo de carga
$('img').error(function(){
$(this).attr('src', 'missing.jpg');
});
Pros: muy poco código, funciona en todas las imágenes sin cambiar su margen de beneficio, puede ser lugar fuera de la cabeza Contras: puede perderse el evento de error en función de la velocidad de las páginas de eventos onload, ralentiza los usuarios experimentados tiempo de carga
$(window).load(function() {
$("img").each(function() {
if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
var src = $(this).attr("src");
var suffix = src.substring(src.length - 6, src.length).split('.')[0];
suffix = suffix.charAt(suffix.length - 1);
$(this).attr("src", "/static/images/generic/missing_" + suffix + ".jpg");
}
});
});
Pros: puede ser colocado en cualquier lugar en la página, arreglará las imágenes sin importar cuándo se ejecute, no ralentiza al usuario s tiempo de carga experimentado Contras: muestra una imagen rota hasta que se ejecuta creando una experiencia de usuario pobre
En mi situación, el tiempo de carga es el mayor problema pero no puedo obtener la última opción para trabajar en IE correctamente, ya que cambia ¡y ninguna imagen rota por igual!
Saludos, Denis
Una variación de esta respuesta puede ser dejar un mango solicitudes isapi-filtro/apache-mod para las extensiones de archivo de imagen común de manera que no es necesario cambiar toda tu img src atributos para que apunte a su manejador . – grenade
Estoy de acuerdo con esto.Un gestor genérico sería mi elección si yo fuera inflexible sobre la fijación de imágenes rotas. – CeejeeB
¡Esta podría ser una opción que debería considerar con MVC, pero esperaba haber podido mantenerla simple en el lado del servidor! –