Skip to main content
Validação HTML

Encontrou uma tag de fechamento após “body” ter sido fechado.

Sobre este problema HTML

Todo documento HTML válido segue uma estrutura rigorosa: uma declaração <!DOCTYPE html>, seguida por um elemento <html> contendo exatamente dois filhos — <head> e <body>. Todo o conteúdo visível e sua marcação associada deve estar dentro de <body>. Assim que o navegador encontra a tag de fechamento </body>, espera apenas a tag de fechamento </html>.

Quando uma tag de fechamento aparece após </body> ter sido fechado, o parser do navegador entra num modo de recuperação de erro. Embora a maioria dos navegadores tente lidar com isto de forma elegante, o comportamento não é garantido ser consistente. Isto pode levar a estruturas DOM inesperadas, que podem causar problemas com JavaScript que depende da árvore DOM, quebrar estilização CSS, ou criar problemas de acessibilidade para leitores de ecrã que dependem de uma estrutura adequada do documento.

Este problema surge comumente de:

  • Tags de fechamento extra ou duplicadas — por exemplo, um </div> extra que não corresponde a nenhum elemento aberto dentro de <body>.
  • Colocar acidentalmente elementos após </body> — tal como mover um <script> ou </div> para fora do body durante a edição.
  • Erros de copiar-colar — fragmentos de marcação colados na localização errada.
  • Problemas de template ou CMS — templates do lado servidor que injetam tags de fechamento na ordem errada.

Para corrigir isto, revise a estrutura do seu documento cuidadosamente. Certifique-se de que cada tag de abertura dentro de <body> tem uma tag de fechamento correspondente também dentro de <body>. Certifique-se de que nada aparece entre </body> e </html> exceto espaços em branco.

Exemplos

Incorreto — tag de fechamento após body estar fechado

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <div>
      <p>Hello world</p>
    </div>
  </body>
  </div>
</html>

Aqui, um </div> extra situa-se entre </body> e </html>. Isto despoleta o erro de validação porque o body já foi fechado quando o parser encontra </div>.

Incorreto — tag script colocada após body

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello world</p>
  </body>
  <script src="app.js"></script>
</html>

Embora os navegadores tipicamente ainda executem o script, colocá-lo após </body> é inválido e produz este aviso.

Correto — todo o conteúdo e tags dentro do body

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <div>
      <p>Hello world</p>
    </div>
    <script src="app.js"></script>
  </body>
</html>

Todos os elementos, incluindo tags <script>, estão adequadamente aninhados dentro do elemento <body>. A única coisa que segue </body> é </html>.

Dica de depuração

Se o seu documento for grande e tiver dificuldades em encontrar a tag perdida, experimente estas abordagens:

  1. Conte as suas tags — certifique-se de que cada tag de abertura (como <div>) tem exatamente um </div> correspondente dentro de <body>.
  2. Use um editor com correspondência de parênteses — a maioria dos editores de código consegue destacar tags de abertura/fechamento correspondentes, tornando as tags órfãs fáceis de identificar.
  3. Verifique o número de linha do validador — o validador W3C reporta a linha onde a tag de fechamento perdida foi encontrada, o que o direciona diretamente para o problema.
  4. Indente adequadamente — indentação consistente torna problemas estruturais visualmente óbvios.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.