Skip to main content
Validação HTML

Etiqueta de início inválida em “img” em “noscript” em “head”.

Sobre este problema HTML

O elemento <noscript> fornece conteúdo de fallback para utilizadores cujos navegadores não suportam scripting ou têm JavaScript desativado. Quando <noscript> aparece dentro de <head>, a especificação HTML restringe o seu conteúdo apenas a elementos de metadados — especificamente <link>, <style>, e <meta>. Uma etiqueta <img> é conteúdo de fluxo, não conteúdo de metadados, por isso não é permitida dentro de <head> independentemente de estar envolvida em <noscript>.

Quando <noscript> aparece dentro de <body>, no entanto, pode conter qualquer conteúdo de fluxo que seria normalmente válido nessa posição — incluindo elementos <img>. É por isto que a correção consiste simplesmente em realocar o bloco <noscript> do <head> para o <body>.

Este problema é extremamente comum com pixels de rastreamento de terceiros. Serviços como Facebook Pixel, LinkedIn Insight Tag, Google Tag Manager, e ferramentas similares frequentemente instruem você a colar um bloco <noscript> contendo um <img> de rastreamento 1×1 diretamente após a etiqueta de abertura <head>. Embora isto funcione nos navegadores (são tolerantes com HTML inválido), não está em conformidade com a especificação HTML e irá gerar um erro de validação.

Para além da conformidade com os padrões, manter o seu HTML válido garante comportamento previsível em todos os navegadores e tecnologias de assistência. Markup inválido pode levar à construção inesperada do DOM, o que pode causar problemas subtis com seletores CSS, consultas DOM JavaScript, ou ferramentas de acessibilidade.

Como corrigir

  1. Localize o bloco <noscript> que contém o elemento <img> dentro do seu <head>.
  2. Mova todo esse bloco <noscript> para algum lugar dentro do <body> — tipicamente logo após a etiqueta de abertura <body>.
  3. Mantenha qualquer etiqueta <script> associada no <head> se desejado; apenas o <noscript> com o <img> precisa de ser movido.

Exemplos

❌ Inválido: <img> dentro de <noscript> em <head>

Este é o padrão comumente fornecido pelas instruções de pixels de rastreamento de terceiros:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <script>
      /* tracking script */
    </script>
    <noscript>
      <img src="https://example.com/pixel?id=123" height="1" width="1" alt="">
    </noscript>
  </head>
  <body>
    <h1>Welcome</h1>
  </body>
</html>

O validador reporta “Bad start tag in img in noscript in head” porque <img> não é conteúdo de metadados válido.

✅ Válido: <noscript> com <img> movido para <body>

Mova o bloco <noscript> para dentro do <body> deixando o <script> no <head>:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <script>
      /* tracking script */
    </script>
  </head>
  <body>
    <noscript>
      <img src="https://example.com/pixel?id=123" height="1" width="1" alt="">
    </noscript>
    <h1>Welcome</h1>
  </body>
</html>

O <img> está agora dentro do <body> (via <noscript>), onde conteúdo de fluxo é permitido. O pixel de rastreamento continuará a funcionar corretamente para utilizadores com JavaScript desativado.

✅ Válido: <noscript> apenas com metadados em <head>

Se você apenas precisa de conteúdo de fallback de metadados no <head>, elementos como <meta>, <link>, e <style> são permitidos:

<head>
  <title>My Page</title>
  <noscript>
    <style>
      .js-only { display: none; }
    </style>
  </noscript>
</head>

Isto é válido porque <style> é conteúdo de metadados. Use este padrão quando precisar de aplicar estilos de fallback para utilizadores sem JavaScript, e reserve blocos <noscript> com <img> ou outro conteúdo de fluxo para o <body>.

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.