2010-05-18 9 views
12

Cuando usojQuery no devuelve la altura del cuerpo adecuada en la carga del documento: ¿su error o el mío?

$(document).ready(function() { 
var bodyHeight = $("body").height(); 
console.log(bodyHeight); 
}); 

puedo obtener un número muy Wack de la altura del cuerpo. Luego corro

$("body").height(); 

en la consola y obtengo la altura correcta. Algo parece sospechoso sobre $ (documento) .load haciendo esto ... Sí, mi CSS funciona bien y todo, ¿así que este es mi error, chromes o jQuery's?

Respuesta

11

que desea buscar en la función $(window).load() en lugar de $(document).ready() .

El evento $(document).ready() se ejecuta cuando el HTML DOM está cargado y listo, incluso si todos los gráficos no se han cargado todavía. El evento $(window).load() se ejecuta más tarde cuando la página completa está completamente cargada, incluidos todos los marcos, objetos e imágenes.

Aquí hay un excelente enlace que describe la diferencia. http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/

+0

¡Gracias! ¡Esto resolvió un problema similar que casi me volvió loco! – thomas

+0

Me ayudó con mi problema. ¡Gracias! –

+0

Todavía se dispara demasiado pronto, pero es mejor que estar listo ... sin embargo, setTimeout sigue siendo necesario para obtener la altura correcta – momomo

15

El evento document.ready se dispara después de que el DOM se haya cargado pero antes de que la página se haya procesado por completo. Si desea obtener la altura correcta, usted debe tratar el caso window.load que dispara después de todas las imágenes y los objetos se han cargado y que la página ha sido prestados:

$(window).load(function() { 
    var bodyHeight = $("body").height(); 
}); 
+0

Cool, Cool. Gracias hombre. Siempre tuve la loca idea de que retrasaría la carga de mi script, ¡pero eso no es problema en los navegadores modernos! –

Cuestiones relacionadas