2011-02-07 9 views
10

he escrito un plugin jquery para escalar una imagen hacia arriba y hacia abajo. en ie 8, el evento de carga de la versión grande de la imagen falla. intenté como thsi:evento de carga con jquery falla en IE 8

 var fullImage = container.find(options.fullSelector); 
     fullImage.attr('src', fullImageUrl).bind('load', function() { 
      content.fadeOut(options.fadeSpeed, function(){ 
       if(slideContent.size()){ 
        slideContent.slideUp(options.resizeSpeed, function(){ 
         smallImage.hide(); 
         fullImage.show(); 
         fullImage.parent().andSelf().stop().animate({ width: options.fullWidth + 'px' }, options.resizeSpeed); 
        }); 
       } 
       else{ 
        smallImage.hide(); 
        fullImage.show(); 
        fullImage.parent().andSelf().stop().animate({ width: options.fullWidth + 'px' }, options.resizeSpeed); 
       } 
      }); 
     }); 

el error dice: El objeto no admite propiedad o método.

¿Qué estoy haciendo mal?

agradecimiento

+0

Después de la primera línea, el tipo 'alerta (fullImage.length);' para determinar si encontramos es en realidad encontrar algo. IE8 tiene algunos caprichos cuando se trata de cruce. – karim79

+0

en una segunda nota, IE8 no está feliz de cargar nada. Me sorprende que incluso permita descargar otros navegadores: D – Shrinath

+0

que con: if (fullImage.size()). ¿No es eso lo mismo? sobre la carga: nunca he tenido problemas ... – luksak

Respuesta

49

Definir el identificador load en primer lugar, a continuación, establecer el src.

fullImage.bind('load', function() { 
    ... 
}).attr('src', fullImageUrl); 
+2

hombre, subiría diez veces si pudiera. Gracias. – clime

+1

Solución simple y efectiva. Gracias –

+0

Estaba teniendo un problema ligeramente diferente al OP donde mi manejador de carga nunca estaba disparando, pero esto también lo solucionó. ¿Alguien puede ayudar a explicar por qué esto funciona? Supongo que IE podría extraer la imagen de la memoria caché antes de que se agregue el controlador de carga. Relacionado: http://davidwalsh.name/image-load-event –

0

¿Qué tal esto?

var test = function($what) { 
 
    $('#debug').html('Image loaded: '+$what.width+' x '+$what.height); 
 
    console.log($what); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script> 
 
// Random image 
 
var src = "http://placehold.it/300x" + Math.round(Math.random() * (310 - 100) + 100); 
 
</script> 
 
<div id="debug">Image loading:</div>  
 
<img onload="test(this)" id="img" /> 
 

 
<script> 
 
$('#img')[0].src = src; 
 
</script>