Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cargar funcion despues de pushState

Estas en el tema de Cargar funcion despues de pushState en el foro de Javascript en Foros del Web. Hola Chicos. Tengo el siguiente código preparado. Código: $(document).ready(function(){ var popped = ('state' in window.history && window.history.state !== null), initialURL = location.href; var content = ...
  #1 (permalink)  
Antiguo 04/12/2013, 04:42
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 7
Cargar funcion despues de pushState

Hola Chicos.

Tengo el siguiente código preparado.

Código:
$(document).ready(function(){

    var popped = ('state' in window.history && window.history.state !== null), initialURL = location.href;

    var content = $('section');

    var ajaxLoadPage = function (url) {

        console.log('Loading ' + url + ' fragment');
        content.load(url + '?fragment=true');
		
		
		var zona = /home/.test(url);
		
		console.log('Zona ' + zona);
		
		if (zona = true) { 
			$(".menu li").removeClass("selectedLava");
			$(".backLava").css("left","83px").css("width","51px");
			$("section").delay(0).animate({height:"20px"}, {duration:700});
		}
		if (zona = false) {
			$("section").delay(0).animate({height:"20px"}, {duration:700});
			$("section").delay(700).animate({height:"160px"}, {duration:700});
			
		}

    }
	var home = 'home';
	history.pushState({page:home}, null, home);

    $('a').not('[href^=http], [href^=https], [href^=#]').click(function(e){

        e.preventDefault();
        var href = $(this).attr('href');
        ajaxLoadPage(href);
        history.pushState({page:href}, null, href);

    });

    $(window).bind('popstate', function(event){

        var initialPop = !popped && location.href == initialURL;
        popped = true;
        if (initialPop) return;

        console.log('Popstate');

        ajaxLoadPage(location.pathname);

    });	

});
Mi problema ocurre con las Animaciones de los objetos.

Resulta que ajax me cambia la url correctamente y me carga el contenido en "content", pero no procesa las animaciones.

El log de "zona" funciona correctamete y da true o false si detecta que estamos en home o no, pero no me hace las animaciones.

Alguna idea?.

Gracias.
  #2 (permalink)  
Antiguo 04/12/2013, 04:54
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Cargar funcion despues de pushState

Tampoco consigo implementar el código para que al pulsar F5 o recargar la web cargue ese mismo contenido.

Imagino que eso ocurre porque en las llamadas al menu hago llamadas amigables "informacion" y en htaccess le digo RewriteRule ^informacion$ php/informacion.php [L,NC]

Y al recargar me carga el php...
  #3 (permalink)  
Antiguo 04/12/2013, 05:24
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Cargar funcion despues de pushState

Bueno, la parte de las animaciones esta resuelta... la tonteria de no poner == a true o false...

Me sigo peleando con el refresco...
  #4 (permalink)  
Antiguo 04/12/2013, 06:04
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cargar funcion despues de pushState

pushstate no refresca la página. si ejecutas este código verás que sólo aparece la alerta al cargar la página
Cita:
window.onload = function(){alert('este mensaje sólo aparecera esta vez');}

function fnc() {
window.history.pushState({ hash : 'hash' }, 'page 2', 'hash');
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 04/12/2013, 06:14
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Cargar funcion despues de pushState

Hola IsaBelM

Gracias por la rapida respuesta.

Eso lo tengo claro, por ello hice este codigo:

Código:
$(window).bind('beforeunload', function(event){ if (event.keyCode == 116) { ajaxLoadPage(location.pathname); } else { ajaxLoadPage(location.pathname); } });
Pero nada, me sigue recargando la pagina, no hace la funcion de Ajax
  #6 (permalink)  
Antiguo 04/12/2013, 06:35
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cargar funcion despues de pushState

el evento onbeforeunload se dispara justamente antes de cerrar la página. entonces no veo una relación para que obtengas un resultado distinto al que obtienes
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 04/12/2013, 11:33
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Cargar funcion despues de pushState

IsaBelM, tienes toda la razón, eso me complicaba la recarga.

Lo solucione usando dos metodos.
- Si pones el link o recargas, recoge la variable por get de la url amigable
- Si navegas por la web cargas contenido mediante el script

Y todo funciona.

Asique muchas gracias por las respuestas.

Etiquetas: ajax, funcion
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 14:57.