javascript que no ejecuta hasta que no recargo la pagina

Iniciado por Urpem, 5 Octubre 2011, 00:40 AM

0 Miembros y 1 Visitante están viendo este tema.

Urpem

Hola,
Tengo una web hecha toda con div's. El contenido principal lo tengo en una capa llamada "texto" y el contenido de esta cambia dinamicamente.
Debajo de esa capa "texto" se tiene que cargar un footer pero tengo problemas para posicionarlo.

Por necesidades de la web, la capa texto la tengo en position:relative i la del footer la tengo que hacer con absolute.

He hecho un script en javascript que cambia el margin-top de la capa footer segun la altura de la capa texto.Ese script se carga luego de cargar el contenido de la capa texto (por includes en php).
La capa footer tiene una posición inicial y el script solo actua si el contenido de la web es más largo de un mínimo establecido.
El script es este:

function Posicionar_footer()
{

var element_footer=document.getElementById("footer");
var alt_capa_text=document.getElementById("text").offsetHeight;
var alt_capa_min_size=document.getElementById("min_size").offsetHeight;
if(alt_capa_text>alt_capa_min_size)
{
element_footer.style.marginTop=alt_capa_text+230+"px";
}
}


El caso es que funciona, pero no a la primera. Es decir, la primera carga no me ejecuta el script pero si recargo la pagina por segunda vez entonces sí.
Es como si hiciera los cambios pero no se actualizara al momento el css de la pagina.

¿Como puedo hacerlo?

fran800m

No has probado los clásicos alert para ver que tal? y meter el script en el head antes de body onload ?

Urpem

Hola fran800m,
Gracias por responder. Claro que he probado con alerts para que me muestre lo que ocurre. Con eso es con lo que he visto que la primera vez no aplica los cambios y es a la segunda carga de la pagina que lo hace. Me pregunto si el hecho de cargar el contenido de la capa "text" con includes no puede tener algo que ver.
Quizas se carga el javascript antes que el php por tanto al momento de cargarse no hay contenido y se queda en la posición incorrecto. Entonces cuando recargara ya lo tendria en cache y si que lo reconocería correctamente. Imagino que debe ir por ahí la cosa.

De todos modos acabo de probar de meterlo en el <body onload=""> y funciona perfectamente. ¿Cómo no se me habia ocurrido? xD

Muchisimas gracias!!

fran800m

Un placer  ;D Lo que te vaya surgiendo lo comentas por si podemos ayudar