2012-01-19 23 views
5

Estoy buscando desvanecerme en la imagen de fondo cuando un visitante llega al sitio pero no cuando ya tienen esa imagen en su caché. Algo similar a esto:Hacer algo si una imagen no está cargada (jquery)

  1. Comprueba si ya hay una imagen de fondo en la memoria caché.
  2. Si es así, muéstrelo.
  3. Si no es así entonces ocultarlo y cuando se carga, se desvanecen en

Usando jQuery que puede ocultarlo y luego se desvanecen en cuando carga:.

$("#bkg img").hide(); 

$('#bkg img').load(function() { 
$(this).fadeIn(); 
}); 

Pero, ¿cómo ¿Lo hago condicional así que solo ocurre si la imagen no está ya en la memoria caché?

Todo lo que he encontrado en foros se activa cuando una imagen termina de cargarse. ¿Cómo puedo activarlo porque no está cargado?

Gracias por cualquier ayuda, Lernz

@Sima basado en el código de that other thread lo he hecho hasta la siguiente - pero no parecen tener ningún efecto. Si puede ver dónde voy mal sería genial:

var storage = window.localStorage; 
if (!storage.cachedElements) { 
storage.cachedElements = ""; 
} 

function logCache(source) { 
if (storage.cachedElements.indexOf(source, 0) < 0) { 
    if (storage.cachedElements != "") 
    storage.cachedElements += ";"; 
     storage.cachedElements += source; 
    } 
} 

function cached(source) { 
    return (storage.cachedElements.indexOf(source, 0) >= 0); 
} 

var plImages; 

//On DOM Ready 
$(document).ready(function() { 
    plImages = $("#fundo-1 img"); 

    //log cached images 
    plImages.bind('load', function() { 
     logCache($(this).attr("src")); 
    }); 

    //display cached images 

    plImages.each(function() { 
    var source = $(this).attr("src") 
    if (!cached(source)) { 
     $(this).hide().fadeIn(); 
    } 
    }); 

}); 

Respuesta

0
$("#bkg img").hide();  
var imgCount=$("#bkg img").length; 
$('#bkg img').load(function(){ 
    if(!--imgCount){ 
     $('#bkg img').fadeIn(); 
      // your code after load 
    } else { 
     // your code onloading time 
    } 
}); 
0

creo que no es tan fácil como parece, here debería ser una solución ..

+0

Esto es excelente, pero me cuesta entenderlo. Quiero preguntar si $ ("# bkg img") existe dentro de window.localStorage.cachedElements ¿verdad? Déjame probar esto ... – Learnz

+0

Bien, realmente no entiendo esto. ¿Alguien tiene más ideas? – Learnz

+1

Nope ... Primero debe verificar window.localStorage si hay una cadena fuente (según la solución vinculada) y si no está almacenada allí, debe vincular el controlador de eventos de carga con el código fadeIn; de lo contrario, no haga nada y deja que se muestre normalmente No se ha almacenado la imagen en sí misma, solo hay información persistente, si la imagen se ha cargado alguna vez antes (pretendemos que, en caso afirmativo, debería estar en la caché ...) – simekadam

Cuestiones relacionadas