2010-12-22 11 views
5

En mi página web algunas imágenes tardan mucho tiempo en cargarse en IE. Así que las usé para cargar imágenes en mi página. Pero el problema persiste. ¿Alguna sugerencia?Precargar imágenes usando jquery

function preload(arrayOfImages) { 
    $(arrayOfImages).each(function(){ 
     $('<img/>')[0].src = this; 
    }); 
    alert("Done Preloading..."); 
} 

// Usage: 

preload([ 
    '/images/UI_1.gif', 
    '/images/UI_2.gif', 
    '/images/UI_3.gif', 
    '/images/UI_4.gif', 
    '/images/UI_5gif', 
    '/images/UI_6.gif', 
    '/images/UI_7.gif', 
    '/images/UI_8.gif', 
    '/images/UI_9.gif' 
]); 

<

div>

+0

¿Está precargando las imágenes por una razón específica usando javascript? –

+0

Me gustaría saber la respuesta a esto también. Aunque las imágenes sí están cargadas, pero el navegador tenía la tendencia a volver a cargarlas. Sin embargo, lo que encontré es que si la conexión a Internet está apagada, las imágenes siguen estando disponibles. Eso significa que la precarga funciona, pero ¿por qué la recarga es un misterio? –

Respuesta

8
// Create an image element 
var image1 = $('<img />').attr('src', 'imageURL.jpg'); 

// Insert preloaded image into the DOM tree 
$('.profile').append(image1); 
// OR 
image1.appendTo('.profile'); 

Pero la mejor manera es utilizar una función de devolución de llamada, por lo que inserta la imagen precargada en la aplicación cuando se ha completado cargando. Para lograr esto simplemente use .load() jQuery event.

// Insert preloaded image after it finishes loading 
$('<img />') 
    .attr('src', 'imageURL.jpg') 
    .load(function(){ 
     $('.profile').append($(this)); 
     // Your other custom code 
    }); 

Actualización # 1

function preload(arrayOfImages) { 
    $(arrayOfImages).each(function(index){ 
     $('<img />') 
     .attr('src', arrayOfImages[index]) 
     .load(function(){ 
      $('div').append($(this)); 
      // Your other custom code 
     }); 
    }); 
    alert("Done Preloading..."); 
} 

// Usage: 

preload([ 
    '/images/UI_1.gif', 
    '/images/UI_2.gif', 
    '/images/UI_3.gif', 
    '/images/UI_4.gif', 
    '/images/UI_5gif', 
    '/images/UI_6.gif', 
    '/images/UI_7.gif', 
    '/images/UI_8.gif', 
    '/images/UI_9.gif' 
]); 
2

Prueba este plugin de jQuery: http://farinspace.com/jquery-image-preload-plugin/

Se le permite agarrar img elementos mediante un selector y hacer que ellos precarga. No estoy seguro de si las imágenes que desea cargar previamente ya se encuentran en el código HTML, si son usted podría estar interesado por este plugin, ya que le permite hacer:

$('#content img').imgpreload(function() 
{ 
    // this = jQuery image object selection 
    // callback executes when all images are loaded 
}); 

tiempo que permite precargar imágenes manualmente con nombres de archivo:

$.imgpreload('/images/a.gif',function() 
{ 
    // this = new image object 
    // callback 
}); 
0

Imágenes sprites pueden hacer cosas tremendamente (pero asegúrese de que comprimirlos usando algo como ImageOptim). A continuación, aloje todas sus imágenes en un CDN en algún lugar (sugiero Amazon S3/CloudFront). Y, por último, precargue todas sus imágenes usando algo como lo siguiente, e intente llamar esto lo antes posible. ¡Espero que esto ayude!

function loadImages(){ 
    var images = [ 
     'http://cdn.yourdomain.com/img/image1.png', 
     'http://cdn.yourdomain.com/img/image2.jpg', 
     'http://cdn.yourdomain.com/img/image3.jpg', 
     'http://cdn.yourdomain.com/img/image4.jpg' 
    ]; 
    $(images).each(function() { 
     var image = $('<img />').attr('src', this); 
    }); 
} 
Cuestiones relacionadas