HTMLeando: para desarrolladores Web

Pregunta


¿Cómo hacer precarga de imágenes en Javascript? 

Responder esta pregunta por dudin el 2009-12-18
Estoy mostrando un slideshow de photos que tienen un tamaño relativamente grande y necesito habilitar los controles (Avanzar, Atrás y Paginado) cuando se hayan cargado todas las fotos, ahora ¿Cómo le hago?

Respuestas

Thumb_up
Thumb_down

0%
0%
Aquí les dejo una clase JavaScript que controla la carga de una imagen y al terminar llama una función de retorno. Mediante la misma se pueden llamar cada una de las imágenes del slideshow.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Ejemplo de precarga</title>
	<script language="javascript">
 function preCargaImagen (){
     this.src= '';
     this.cargando=false;
     this.cargada= false;
     this.arrancaCarga= function(src) {
        this.src = src;
        if ((this.cargada == false) && (this.cargando != true)) {
            this.cargando = true;
            var nuevaImagen = null;
            nuevaImagen = new Image();
            nuevaImagen.src = this.src;
            if (nuevaImagen.complete) {
                    this.cargada = true;
                    Imagencargada(this);
            } else {
                nuevaImagen.onload = function() {
                    this.cargada = true;
                    Imagencargada(this);
                };
            }
        }
    }
}
function $(id){
return document.getElementById(id);
}
</script>
  </head>
  <body>
  <img id="imagen1" src="" width="500" alt="Aquí va la foto después de la precarga"/>
<script language="javascript">
 function Imagencargada (imagen){  $('imagen1').src=imagen.src;}
 var imagen1 = new preCargaImagen();
     imagen1.arrancaCarga('http://farm2.static.flickr.com/1403/1449205579_f99a9851d5.jpg');
 </script>
 </body>
</html>
por maikel el 2009-12-18

Thumb_up
Thumb_down

0%
0%
Otra clase que aun no he probado.

/*
**************************************
* Preloader Class v1.0               *
* Autor: Carlos R. L. Rodrigues      *
**************************************
*/
Preloader = function(){
    var o = this;
    o.img = [];    o.r = []; o.g = [];
    o.n = {}; o.total = o.loaded = 0;
};
Preloader.prototype.add = function(i, g){
    var o = this, n = (o.g[o.total] = [g || "general"])[0];
    (g = o.n)[n] >= 0 ? ++g[n] : g[n] = 1;
    o.img[o.total++] = i;
};
Preloader.prototype.load = function(){
    var o = this, p = o.img, l = p.length, a, g = o.g;
    while(l--){
        (g[l][1] = a = new Image()).src = p[a.i = l];
        a.onload = function(){
            if(o.r[this.i]) return;
            !--o.n[g[this.i][(o.r[this.i] = 1) - 1]] && o.onGroupComplete && o.onGroupComplete(g[this.i][0]);
            o.onImageComplete && o.onImageComplete(this);
            (++o.loaded == o.total) && o.onComplete && o.onComplete();
        };
        (a.fileSize !== undefined ? a.fileSize > -1 : a.width) && a.onload();
        a.onerror = function(){
            o.onImageError && o.onImageError(this);
        }
    }
};
Preloader.prototype.getImagesByGroup = function(n){
    var g = this.g, i = [], p = 0, n = n || "general";
    for(var j = g.length; j; g[--j][0] == n && (i[p++] = g[j][1]));
    return i;
};
Trozo de código tomado de Snipplr.com. Enviado por Leech el 21-7-2006



Fuente: http://jsfromhell.com/classes/preloader
por maikel el 2009-12-18

Anónimo:   Entrar


Consejo: Sé tan específico y descriptivo como puedas. Comparte tu experiencia personal o tus conocimientos.
Puedes investigar para completar tu respuesta.

Puedes poner directamente trozos de código usando las etiquetas [code=php] y [/code] o incrustar desde Snipplr.com [snippet=id_snippet]

Compartir: WebeameMeneame Delicious Digg

Preguntas relacionadas