Onde devo colocar <script> tags em HTML markup?

Ao incorporar JavaScript em um documento HTML, onde é o lugar apropriado para colocar as tags <script> e incluir JavaScript? Lembro-me que não é suposto colocá-las na secção <head>, mas colocar no início da secção <body> também é mau, uma vez que o JavaScript terá de ser analisado antes da página ser renderizada completamente (ou algo do género). Isso parece deixar o end da seção <body> como um lugar lógico para <script> tags.

Então, onde é o lugar certo para colocar as tags <script>?

(Esta questão refere-se esta questão, na qual foi sugerido que chamadas de função JavaScript devem ser movidas de <a> tags para <script> tags. I'm especificamente utilizando jQuery, mas respostas mais gerais também são apropriadas).

Pouco antes do fecho da etiqueta do corpo, como indicado no

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

Cortar os Scripts no Fundo

O problema causado pelos scripts é que eles bloqueiam downloads paralelos. A especificação HTTP/1.1 sugere que os navegadores não baixam mais que dois componentes em paralelo por nome de host. Se você servir suas imagens a partir de vários hostnames, você pode obter mais de dois downloads para ocorrer em paralelo. Enquanto um script estiver sendo baixado, no entanto, o navegador não iniciará nenhum outro download, mesmo em nomes de host diferentes.

Comentários (7)

Se você estiver utilizando JQuery então coloque o javascript onde você achar melhor e utilize $(document).ready() para garantir que as coisas sejam carregadas corretamente antes de executar qualquer função.

Em uma nota lateral: Eu gosto de todas as minhas tags de script na seção ``, pois esse parece ser o lugar mais limpo.

Comentários (5)

A resposta convencional (e amplamente aceita) é "no fundo", porque então o DOM inteiro terá sido carregado antes que qualquer coisa possa começar a ser executada.

Existem dissidentes, por várias razões, começando pela prática disponível para iniciar intencionalmente a execução com uma página sobre o evento de carga.

Comentários (0)