2011-02-07 13 views
10

ho scritto un plug-in jquery per ridimensionare un'immagine verso il basso. ad esempio 8 l'evento di caricamento della versione grande dell'immagine non riesce. Ho provato come questo:evento di carico con jquery non riuscito in 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); 
       } 
      }); 
     }); 

l'errore dice: Oggetto non supporta proprietà o metodo.

cosa sto facendo di sbagliato?

ringraziamento

+0

Dopo la prima linea, tipo 'alert (fullImage.length);' per determinare se ritrovamento è effettivamente trovare qualcosa. IE8 ha alcune stranezze quando si tratta di attraversare. – karim79

+0

in una seconda nota, IE8 non è felice di caricare nulla. Sono sorpreso che consente anche di scaricare altri browser: D – Shrinath

+0

i quello con: if (fullImage.size()). non è lo stesso? sul caricamento: ho avuto problemi con nver ... – luksak

risposta

49

Impostare il gestore load prima, quindi impostare il src.

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

uomo, vorrei dieci volte se potessi. Grazie. – clime

+1

Soluzione semplice ed efficace. Grazie –

+0

Stavo riscontrando un problema leggermente diverso rispetto all'OP in cui il mio gestore di carico non si stava attivando, ma è stato risolto anche per me. Qualcuno può aiutare a spiegare perché funziona? La mia ipotesi è che IE possa estrarre l'immagine dalla cache prima che venga aggiunto il gestore di carico. Correlato: http://davidwalsh.name/image-load-event –

0

Che dire di questo?

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>