Quão errado é colocar a tag de script após a tag de fechamento do corpo (</body>
). ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
javascript
html
DanC
fonte
fonte
Respostas:
Não será validado fora das tags
<body>
ou<head>
. Também não fará muita diferença - a menos que você esteja fazendo manipulações DOM que possam interromper o IE antes que o elemento body seja totalmente carregado - para colocá-lo imediatamente antes do fechamento</body>
.fonte
<script src="..." defer>
, o que funciona em todos os principais navegadores (embora com um bug potencialmente violador no IE9 e inferior).Sim. Somente comentários e a tag final do elemento html são permitidos após a tag final do corpo.
Os navegadores podem executar a recuperação de erros, mas você nunca deve depender disso.
fonte
Como Andy disse que o documento não será válido, mas, mesmo assim, o script ainda será interpretado. Veja o trecho do WebKit, por exemplo:
fonte
O IE não permite mais isso (desde a versão 10, acredito) e ignorará esses scripts. O FF e o Chrome ainda os toleram, mas há chances de que algum dia eles descartem isso como fora do padrão.
fonte
Inserir processualmente "script de elemento" após "corpo do elemento" é "erro de análise" pelo processo recomendado pelo W3C . Em "Construção em árvore", crie um erro e execute "tokenize again" para processar esse conteúdo. Portanto, é como uma etapa adicional. Somente então pode ser executada a "Execução de Script" - consulte o processo do esquema .
Tecnicamente, por navegador, é um processo interno, como eles marcam e otimizam.
Espero ter ajudado alguém.
fonte
Sim. Mas se você adicionar o código fora dele, provavelmente não será o fim do mundo, já que a maioria dos navegadores o corrigirá, mas ainda é uma má prática entrar.
fonte
O Google realmente recomenda isso em relação à 'Otimização de CSS'. Eles recomendam alinhar estilos críticos acima da dobra e adiar o restante (arquivo css).
Exemplo:
Consulte: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
fonte
body
elemento. Esse artigo do Google não aconselha ninguém a fazer isso.Navegadores modernos terão tags de script no corpo da seguinte forma:
Basicamente, isso significa que o script será carregado assim que a página terminar, o que pode ser útil em certos casos (ou seja, manipulação do DOM). No entanto, eu recomendo que você pegue o mesmo script e coloque-o na tag head com "adiar", pois isso dará o mesmo efeito.
fonte
script
tags tivessem umevent
atributo que pudesse ser definido para determinar quando analisar o script. Então, você precisaevent="load" event="DOMContentLoaded"
executar o script após a criação do DOM ouevent="beforeunload"
nobeforeunload
evento da janela . Exemplo<script src="scripts/main.js" event="DOMContentLoaded"></script>
,.