2011-03-18 27 views
5

Estoy precargando algunas imágenes y luego utilizándolas en un lightbox. El problema que tengo es que, aunque las imágenes se están cargando, el navegador no las muestra.Imágenes precargadas que no se muestran en Chrome

Este problema es específico de Chrome. Se ha mantenido a través de Chrome 8 - 10, y he estado probando y quitando para solucionarlo todo este tiempo y no he llegado a ninguna parte.

He leído estas preguntas similares,
Chrome not displaying images though assets are being delivered to browser
2 Minor Crossbrowser CSS Issues. Background images not displaying in Google Chrome?
JavaScript preloaded images are getting reloaded

cosas que todas comportamiento similar detalle, pero en Chrome para Mac. Mientras que esto está sucediendo en Windows.

  • Todos los demás buscadores parecen estar bien.
  • Si tiene abierto Firefox y Chrome, cargue la página en Firefox y luego en Chrome, aparecerán las imágenes.
  • vez que haya cargado manualmente las imágenes, utilizando la manivela de barra de herramientas de Webkit WebDev, que siempre aparecen
  • Todos los enlaces y las imágenes de este tipo son bien y trabajando
  • Borrado de todo, desde Chrome no parece hacer ningún diferencia (caché, historial, etc.)

Si alguien tiene alguna idea, sería fantásticamente útil, ya que estoy literalmente sin opciones aquí.

PD, Disculpas si hay respuestas tardías, ¡me voy de vacaciones por una semana mañana! : D

Actualización Aquí está la función javascript que está precargando las imágenes.

var preloaded = new Array(); 
function preload_images() { 
    for (var i = 0; i < arguments.length; i++){ 
     document.write('<'); 
     document.write('img src=\"'+arguments[i]+'\" style=\"display:none;\">'); 
    }; 
}; 

actualización
todavía estoy teniendo problemas con esto, y he eliminado la totalidad de precarga función de imágenes. ¿Quizás entregar una hoja de estilo a través del document.write() no es la mejor manera?

+0

mente pegar algo de código por lo que vemos cómo se está precarga? – jlindenbaum

Respuesta

5

Es posible que Chrome no los esté precargando ya que está escribiendo en el DOM sin pantalla, por lo que puede ser lo suficientemente inteligente como para darse cuenta de que no necesita procesarse. Tal vez puedas probar:

var preloaded = new Array(); 

function preload_images(){ 
    for (var x = 0; x < preload_images.arguments.length; x++) 
    { 
     preloaded[x]  = new Image(); 
     preloaded[x].src = preload_images.arguments[x]; 
    } 
} 

El objeto Foto Javascript tiene una gran cantidad de funciones útiles, así le puede resultar útil:

http://www.javascriptkit.com/jsref/image.shtml

onabort()

Código es ejecutado cuando el usuario aborta la descarga de la imagen .

onerror()

código se ejecuta cuando se produce un error con la carga de la imagen (es decir: no encontrado). Ejemplo (s)

onload()

código se ejecuta cuando la imagen descargas con éxito y totalmente.

Y entonces usted también tiene la propiedad complete que verdadero/falso le dice si la imagen ha cargado completamente (pre).

+0

Agregará recompensa en 20 horas :) –

+0

@David, ¿funcionó para usted? Me alegro de haberlo hecho :) –

+0

Sí, parece que la precarga es un poco más complicada en Chrome que solo agregar las imágenes. –

2

Resulta que Chrome tiene en cuenta el almacenamiento en caché de HTTP y descarta cualquier imagen precargada inmediatamente después de la precarga si el almacenamiento en caché se establece incorrectamente para caducar.

En mi caso estoy generando las imágenes de forma dinámica y, de forma predeterminada, la respuesta se envió al navegador con vencimiento inmediato.

Para solucionarlo tuve que establece lo siguiente a continuación:

 Response.Cache.SetExpires(DateTime.Now.AddYears(1)); 
     Response.Cache.SetCacheability(HttpCacheability.Public); 

     return File(jpegStream, "image/jpeg"); 
+0

Estaba generando imágenes a través de PHP y estaba pensando por qué Google Chrome estaba descartando las imágenes precargadas. Luego descubrí que había establecido la fecha de caducidad en el pasado. Gracias por el tipo de información. – viji

Cuestiones relacionadas