Ótima pergunta.
Existe alguma confusão em torno de todo o conselho "coloque scripts no final da página" e quais problemas ele tenta resolver. Para esta pergunta, não vou falar se colocar scripts na parte inferior da página afeta o desempenho / tempos de carregamento ou não. Eu só vou falar se você também precisa $(document).ready
colocar scripts no final da página .
Presumo que você esteja fazendo referência ao DOM nas funções que está chamando imediatamente em seus scripts (qualquer coisa tão simples quanto document
ou document.getElementById
). Também estou supondo que você está perguntando apenas sobre esses arquivos [referência ao DOM]. IOW, scripts de biblioteca ou scripts que seu código de referência de DOM requer (como jQuery) precisam ser colocados anteriormente na página.
Para responder à sua pergunta : se você incluir seus scripts de referência de DOM na parte inferior da página, não, você não precisa $(document).ready
.
Explicação : sem a ajuda de"onload"
implementações relacionadas, como $(document).ready
a regra é: qualquer código que interage com os elementos DOM dentro da página deve ser colocado / incluído mais abaixo na página do que os elementos aos quais faz referência. A coisa mais fácil a fazer é colocar esse código antes do fechamento </body>
. Veja aqui e aqui . Ele também contorna o temido erro "Operação abortada" do IE .
Dito isso, isso de forma alguma invalida o uso de $(document).ready
. Fazer referência a um objeto antes de ser carregado é [um dos] erros mais comuns cometidos ao iniciar em JavaScript DOM (testemunhado muitas vezes para contar). É a solução da jQuery para o problema e não requer que você pense sobre onde esse script será incluído em relação aos elementos DOM aos quais ele faz referência. Esta é uma grande vitória para os desenvolvedores. É apenas uma coisa a menos em que eles precisam pensar.
Além disso, geralmente é difícil ou impraticável mover todos os scripts de referência do DOM para a parte inferior da página (por exemplo, qualquer script que emita document.write
chamadas deve permanecer parado). Outras vezes, você está usando um framework que renderiza algum template ou cria pedaços de javascript dinâmico, dentro do qual faz referência a funções que precisam ser incluídas antes do js.
Finalmente, costumava ser "prática recomendada" colocar todo o código de referência DOM em window.onload
, no entanto, foi eclipsado por $(document).ready
implementações por motivos de documentação adequada .
Tudo isso resulta em $(document).ready
uma solução muito superior, prática e geral para o problema de referenciar elementos DOM muito cedo.