Foros del Web » Programando para Internet » Jquery »

Que no desaparezca el gif hasta cargar todas las imágenes

Estas en el tema de Que no desaparezca el gif hasta cargar todas las imágenes en el foro de Jquery en Foros del Web. Hola amigos, resulta que tengo este código: Código: var disc = function(div,of){ $(div).html("<img src='loading.gif' id='load'>"); var ajax = $.ajax({url : of, type : "GET"}); ajax ...
  #1 (permalink)  
Antiguo 06/08/2015, 07:51
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 3 meses
Puntos: 4
Que no desaparezca el gif hasta cargar todas las imágenes

Hola amigos, resulta que tengo este código:

Código:
var disc = function(div,of){
	$(div).html("<img src='loading.gif' id='load'>");
	var ajax = $.ajax({url : of, type : "GET"});
	ajax
		.done(function(response){
			Commons.socialDone(div, response);
			FB.XFBML.parse(document.getElementById('comentarios'));
   twttr.widgets.load();
		})
		.fail(function(){
			Commons.socialFail(div);
		});
}

Commons = {
    socialDone : function (div, response) {
		$(div)
			.hide()
			.html(response)
			.fadeIn('slow');
	},

    socialFail : function (div) {
		$(div)
			.hide()
			.html("<p>error</p>")
			.fadeIn('slow');
		
	}
}
Que antes de cargar el div muestra un gif animado. Pues bien, el gif animado desaparece y en el div aún no se han cargado las imágenes, y aparecen cargándose. Me gustaría que el gif permaneciese hasta que estuviese todo cargado, imágenes, texto, código... ¿Cómo podría modificarlo para que así sucediese? Gracias.
  #2 (permalink)  
Antiguo 06/08/2015, 11:00
 
Fecha de Ingreso: febrero-2006
Mensajes: 155
Antigüedad: 18 años, 2 meses
Puntos: 6
Respuesta: Que no desaparezca el gif hasta cargar todas las imágenes

Hola Luisa,

El gif que tienes ahí es válido sólo para el llamado por ajax, por eso desaparece una vez que reemplazas el contenido del div en socialDone.

Para mantenerlo activo, deberías gatillar un "listener" que espere la carga de las imágenes, no lo he probado pero debería ser algo similar a esto:

Código:
    socialDone : function (div, response) {
                $('body').append('<div id="precarga" style="display: none;"></div>');
                $('#precarga').html(response);
                $('#precarga img').on('load', function(){
                     $(div).hide().html($('#precarga').html()).fadeIn('slow');
                     $('#precarga').remove();
                });
	},
  #3 (permalink)  
Antiguo 06/08/2015, 14:30
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Que no desaparezca el gif hasta cargar todas las imágenes

Cita:
Iniciado por man0l0 Ver Mensaje
Hola Luisa,

El gif que tienes ahí es válido sólo para el llamado por ajax, por eso desaparece una vez que reemplazas el contenido del div en socialDone.

Para mantenerlo activo, deberías gatillar un "listener" que espere la carga de las imágenes, no lo he probado pero debería ser algo similar a esto:

Código:
    socialDone : function (div, response) {
                $('body').append('<div id="precarga" style="display: none;"></div>');
                $('#precarga').html(response);
                $('#precarga img').on('load', function(){
                     $(div).hide().html($('#precarga').html()).fadeIn('slow');
                     $('#precarga').remove();
                });
	},
¿Y cómo podría aplicarlo al código de mi web? ¿podrías mostrarme un ejemplo?

EDITO: He intentado implementarlo pero no me sale, ¿dónde pongo el div preload? ¿dónde pongo el código? ¿en la parte de socialdone?

Última edición por Luisa29; 06/08/2015 a las 16:20
  #4 (permalink)  
Antiguo 06/08/2015, 21:41
 
Fecha de Ingreso: febrero-2006
Mensajes: 155
Antigüedad: 18 años, 2 meses
Puntos: 6
Respuesta: Que no desaparezca el gif hasta cargar todas las imágenes

Cita:
Iniciado por Luisa29 Ver Mensaje
¿Y cómo podría aplicarlo al código de mi web? ¿podrías mostrarme un ejemplo?

EDITO: He intentado implementarlo pero no me sale, ¿dónde pongo el div preload? ¿dónde pongo el código? ¿en la parte de socialdone?
Hola, claro, te puse todo el reemplazo al socialDone: {...},

No deberías hacer nada más que ponerlo ahí.

Slds!
  #5 (permalink)  
Antiguo 08/08/2015, 10:53
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Que no desaparezca el gif hasta cargar todas las imágenes

Cita:
Iniciado por man0l0 Ver Mensaje
Hola, claro, te puse todo el reemplazo al socialDone: {...},

No deberías hacer nada más que ponerlo ahí.

Slds!
No me funciona, creo que habría que hacer algo más, ¿Esto lo quito directamente?

Código:
	$(div).html("<img src='loading.gif' id='load'>");
Y donde exactamente abro el div con el gif dentro, ¿encima del div que carga el contenido? ¿dentro del div que carga el contenido? ¿dentro del mismo contenido que es cargado? Perdona mi ignorancia.
  #6 (permalink)  
Antiguo 08/08/2015, 17:08
 
Fecha de Ingreso: febrero-2006
Mensajes: 155
Antigüedad: 18 años, 2 meses
Puntos: 6
Respuesta: Que no desaparezca el gif hasta cargar todas las imágenes

Hola Luisa, espero que en el futuro puedas estudiar algo de javascript (sin ánimo de ofender), entendiendo que este pueda ser un caso puntual, así quedaría tu código completo:

Código:
var disc = function(div,of){
	$(div).html("<img src='loading.gif' id='load'>");
	var ajax = $.ajax({url : of, type : "GET"});
	ajax
		.done(function(response){
			Commons.socialDone(div, response);
			FB.XFBML.parse(document.getElementById('comentarios'));
   twttr.widgets.load();
		})
		.fail(function(){
			Commons.socialFail(div);
		});
}

Commons = {
  socialDone : function (div, response) {
                $('body').append('<div id="precarga" style="display: none;"></div>');
                $('#precarga').html(response);
                $('#precarga img').on('load', function(){
                     $(div).hide().html($('#precarga').html()).fadeIn('slow');
                     $('#precarga').remove();
                });
	},

    socialFail : function (div) {
		$(div)
			.hide()
			.html("<p>error</p>")
			.fadeIn('slow');
		
	}
}

Etiquetas: gif, todas
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 08:41.