Sé que, en jQuery, se nos dice que usemos $(document).ready()
para asegurarnos de que los elementos DOM estén listos para la interacción. Sé que esto definitivamente se aplica si las etiquetas de script están en el <head>
. Si se encuentran al final de <body>
, después de todos los elementos DOM, ¿debería seguir usando una función DOM-ready? ¿Hay navegadores en los que mi código fallaría si no lo hiciera?¿Debo usar las funciones listas para DOM si mis scripts están al final del cuerpo?
Gracias!
+1 ¡Pásame, todos son buenos puntos! –
Es bueno saberlo - ¡gracias! – Matchu
No, IE permite la manipulación del elemento primario contenedor del elemento '
La función DOM-ready asegura que todo el DOM se haya creado realmente para que todos los elementos en el documento puedan ser alcanzados. El
window.onload
normal se carga solo cuando se han cargado todas las imágenes, mientras que el evento de jQuery se dispara tan pronto como existe la estructura del documento. Si necesita que algo suceda "justo cuando se carga el documento", no hay ninguna razón para usar nada más que$(document).ready()
.Fuente
2010-01-03 03:52:21
Así que mi pregunta es, ¿está el documento suficientemente cargado para el momento en que se ejecutan mis scripts? – Matchu
Nunca me encontré con un navegador donde no se podía acceder al DOM de los elementos html que aparecían antes de mi script.
Dicho esto, si está utilizando jQuery o algo similar, probablemente use el método ready(), solo para que otras personas acostumbradas a jQuery entiendan el código.
¿Hay alguna razón por la que desea evitar esto?
(si usted está buscando una manera de evitar cargar jQuery, entonces, bueno, sí, en mi experiencia, siempre se puede acceder al DOM de los elementos que aparecen antes de la secuencia de comandos.)
Fuente
2010-01-03 03:52:44
Ya estoy usando jQuery para el acceso general a DOM, pero mi script está organizado de tal manera que, para modularizar correctamente ciertas acciones listas para DOM, terminan en diferentes partes del código. Se vería más limpio si pudiera eliminar $ (function() {}), pero no estoy dispuesto a hacerlo hasta que esté seguro de que eliminarlo no puede dañar nada. – Matchu
hay otra razón para poner sus scripts al final: los navegadores hacen no cargan archivos JS en paralelo porque pueden afectar todo lo que viene después. De hecho, todo se detiene en el navegador hasta que el archivo JS se descarga y se analiza: texto, imágenes, todo. Por lo tanto, a menos que tenga que cargarlo antes de, cargue su JS al final de la página.
Fuente
2010-01-03 04:00:33
En realidad, la mayoría de los navegadores modernos pueden cargar scripts en paralelo; consulte el gráfico en http://www.browserscope.org/?v=top&category=network Sin embargo, la carga paralela no resuelve el problema. Otro problema es que usted mencionó que los navegadores deje de analizar y renderizar hasta que los scripts se hayan cargado y ejecutado, por lo que poner scripts en la parte inferior sigue siendo un buen consejo. – Annie
@Annie: gracias por el enlace.No me había dado cuenta de que habían solucionado el problema de descarga de scripts paralelos en FF 3.5 y MSIE 8. Es interesante observar que ambos descargarán script/script y script/stylesheet en paralelo, pero no script/image. ¿Alguna idea de por qué podría ser? –