¿Dónde debo colocar las etiquetas <script> en el marcado HTML?

Al incrustar JavaScript en un documento HTML, ¿cuál es el lugar adecuado para colocar las etiquetas <script> y el JavaScript incluido? Creo recordar que se supone que no hay que colocarlas en la sección <head>, pero colocarlas al principio de la sección <body> también es malo, ya que el JavaScript tendrá que ser analizado antes de que la página se renderice completamente (o algo así). Esto parece dejar el end de la sección <body> como lugar lógico para las etiquetas <script>.

Entonces, ¿dónde es el lugar correcto para poner las etiquetas <script>?

(Esta pregunta hace referencia a esta pregunta, en la que se sugería que las llamadas a las funciones de JavaScript deberían trasladarse de las etiquetas <a> a las etiquetas <script>. Estoy utilizando específicamente jQuery, pero también son apropiadas respuestas más generales).

Justo antes de la etiqueta de cierre del cuerpo, como se indica en

http://developer.yahoo.com/performance/rules.html#js_bottom

Poner los scripts al final

El problema que causan los scripts es que bloquean las descargas en paralelo. La especificación HTTP/1.1 sugiere que los navegadores no descarguen más de dos componentes en paralelo por nombre de host. Si usted sirve sus imágenes desde varios nombres de host, puede conseguir que se produzcan más de dos descargas en paralelo. Sin embargo, mientras un script se está descargando, el navegador no iniciará ninguna otra descarga, incluso en diferentes nombres de host.

Comentarios (7)

Si estás usando JQuery entonces pon el javascript donde mejor te parezca y usa $(document).ready() para asegurarte de que las cosas se cargan correctamente antes de ejecutar cualquier función.

En una nota lateral: Me gusta que todas mis etiquetas de script en la sección `` ya que parece ser el lugar más limpio.

Comentarios (5)

La respuesta convencional (y ampliamente aceptada) es "en la parte inferior", porque entonces todo el DOM se habrá cargado antes de que algo pueda empezar a ejecutarse.

Hay disidentes, por varias razones, empezando por la práctica disponible de comenzar intencionalmente la ejecución con un evento de carga de la página.

Comentarios (0)