2012-01-26 36 views
27

cuando coloco una etiqueta img, creo dinámicamente el atributo src. ¿Hay una manera de probar si el src (ruta donde se encuentra la imagen) existe realmente con javascript con el fin de evitar que:ver si existe el src de img

enter image description here

+2

es posible que desee considerar el uso de un script del lado del servidor para comprobar esto como navegadores pueden tener activado javascript. – rogerlsmith

+0

Definir "realmente existe".Debido a la política de origen entre dominios, no podrá examinar las imágenes que el navegador recupera del sitio remoto utilizando Javascript, por lo que lo que está solicitando puede ser imposible. Puede enviar la URL al servidor y hacer que descargue el archivo, pero esa es una mala idea desde el punto de vista de la seguridad. – Borealid

+0

Encontré esta publicación. Debería ayudarte. http://www.irt.org/script/52.htm –

Respuesta

58

Puede utilizar el error evento:

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'; 
}; 

línea Versión:

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

O

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

<img> etiqueta apoya estos eventos:

  • abort (OnAbort)
  • error (OnError)
  • load (onLoad)

Más información:

+0

Vi en otros foros, que no funciona en IE, ¿es correcto? –

+0

@Mr: Funciona para mí: http://jsbin.com/egohud – Sarfraz

+0

¡Bien, gracias! Probablemente versiones anteriores, quién sabe xD gracias. –

10

se puede hacer una llamada AJAX anterior (con head método) y ver el código de retorno del servidor o puede utilizar onerror evento para cambiar url o hacerlo oculto, por ejemplo

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

(He usado atributo en línea sólo para explicar la idea)

+0

Ejemplo impresionante. Funciona de maravilla. –

0

lo aborda de manera equivocada.
Cuando genera sus enlaces con el script del lado del servidor, verifique si el archivo existe o no (utilizando file_exists() en PHP, por ejemplo).

No debe confiar en JavaScript cuando puede hacerlo en el lado del servidor, ya que JavaScript se puede modificar y deshabilitar.

Pregúntese usted mismo cómo está generando los atributos src=, y verifique si el archivo existe o no, y proporcione una alternativa.

4

Si crea el src dinámicamente con javascript puede utilizar esto:

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

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

+1

La imagen existe en la ruta siguiente, pero dice 'no funciona' cuando ejecuto el fragmento de código. ¿Es por la "misma política de origen"? – yalpertem

+0

es porque, obj.complete devuelve falso. el código se ejecuta de inmediato. mientras que el estado aún no está completo. por lo que siempre va a bloquear –

Cuestiones relacionadas