Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Esperar que attr(src,x) termine

Estas en el tema de Esperar que attr(src,x) termine en el foro de Frameworks JS en Foros del Web. Hola a todos. Tengo el siguiente problema: el flujo de ejecucion no espera a que attr termine de cargar la imagen: lo hace durante la ...
  #1 (permalink)  
Antiguo 22/04/2012, 08:10
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Esperar que attr(src,x) termine

Hola a todos.
Tengo el siguiente problema:

el flujo de ejecucion no espera a que attr termine de cargar la imagen: lo hace durante la animacion. Si pongo un alert(1) despues de im.attr, todo va perfectamente.
Se puede usar callback con attr? (lo probé, sin resultados)
Alguna sugerencia?
Gracias de antemano.


Código PHP:
        ......
        
im.attr("src",$(this).attr("href"));
        
im.css({
            
position'absolute',
            
leftimgxica.offset().left,
            
topimgxica.offset().top,
            
widthevent.target.width,
            
heightevent.target.height
        
});
        
im.animate({left:posfi.left,top:posfi.top,width:700,height:400},400); 
  #2 (permalink)  
Antiguo 22/04/2012, 10:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Esperar que attr(src,x) termine

Hola:

Normalmente se precargan las imágenes antes...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 22/04/2012, 20:33
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Esperar que attr(src,x) termine

Probá algo así:

Código Javascript:
Ver original
  1. // Precargar imagen
  2.             src_imagen = '%inserta url%';
  3.             imagenPreCargada = new Image();
  4.             imagenPreCargada.src = src_imagen;
  5.            
  6.             // Obtener elemento de imagen, darle su SRC y ocultarlo
  7.             $img = $('img').hide().attr('src',src_imagen);
  8.            
  9.             //cuando la imagen termine de cargar, mostrar la imagen con efecto
  10.             $(imagenPreCargada).load(function(){
  11.                 $img.fadeIn();
  12.             });

Ejemplo funcionando:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  3.     <script type="text/javascript">
  4.         $(function(){
  5.             // Precargar imagen
  6.             src_imagen = 'http://nahueljose.com.ar/upload/uploads/homero.gif?' + Math.random()*99999 //emular URL diferente, ignora esto.
  7.             imagenPreCargada = new Image();
  8.             imagenPreCargada.src = src_imagen;
  9.            
  10.             // Obtener elemento de imagen y ocultarlo
  11.             $img = $('img').hide().attr('src',src_imagen);
  12.            
  13.             //cuando la imagen termine de cargar, mostrar la imagen con efecto
  14.             $(imagenPreCargada).load(function(){
  15.                 $img.fadeIn();
  16.             });
  17.         });
  18.     </script>
  19.     <title>Test</title>
  20. </head>
  21.     <!-- -->
  22.     <img />
  23. </body>
  24. </html>

Creo que el script se explica por si mismo. Espera a que la imagen esté cargada en la caché para mostrarla con efecto y no se note la carga.
__________________
nahueljose.com.ar
  #4 (permalink)  
Antiguo 23/04/2012, 09:51
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Esperar que attr(src,x) termine

Gracias por vuestras respuestas.

El código de Naahuel, lo he adaptado así:
Código PHP:
    $('a.setimg').live('click',function(event){
        
event.preventDefault();
        
imgxica=$(this).children('img');
        
im=$('#imgcentral');
        
posfi=im.position();
        
        
src_imagen = $(this).attr("href");
        
imagenPreCargada = new Image(); 
        
imagenPreCargada.src src_imagen;
            
        
im im.hide().attr('src',src_imagen);

        
im.css({
            
position'absolute',
            
leftimgxica.offset().left,
            
topimgxica.offset().top,
            
widthevent.target.width,
            
heightevent.target.height
        
});

        $(
imagenPreCargada).load(function(){
            
im.animate({left:posfi.left,top:posfi.top,width:700,height:400},400);
        });
    }); 
El problema es que trabajando en local, como la carga de la src es muy rápida, y siempre me va bien. El miércoles lo subiré al servidor real. Si hay problemas, os dejaré el link de la página y quedará todo mas claro lo que pretendo y lo que ocurre.

Saludos, y gracias de nuevo!
  #5 (permalink)  
Antiguo 28/04/2012, 05:39
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Esperar que attr(src,x) termine

Caricatros, naahuel. Gracias por vuestra ayuda.
Ya subi el código al servidor y funciona de perlas!
Gracias por vuestra ayuda.

Etiquetas: esperar, termine
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:10.