Sobre este problema HTML
O atributo target especifica onde apresentar o recurso ligado. A especificação HTML define um conjunto de palavras-chave reservadas que todas começam com um sublinhado: _blank, _self, _parent e _top. Qualquer outro valor que comece com um sublinhado é considerado inválido porque o prefixo sublinhado é reservado para palavras-chave atuais e futuras definidas pela especificação.
Isto é importante por várias razões. Primeiro, os navegadores podem lidar com valores não reconhecidos com prefixo sublinhado de forma inconsistente — alguns podem tratá-los como _blank, enquanto outros podem ignorá-los completamente ou tratá-los como contextos de navegação nomeados. Isto leva a comportamento imprevisível em diferentes navegadores. Segundo, usar palavras-chave reservadas mas indefinidas sinaliza um provável erro tipográfico ou mal-entendido do atributo, que pode causar navegação com comportamento diferente do pretendido. A conformidade com os padrões garante que as suas ligações funcionam de forma fiável para todos os utilizadores.
As palavras-chave válidas e os seus significados são:
-
_self— Abre a ligação no contexto de navegação atual (comportamento padrão). -
_blank— Abre a ligação num contexto de navegação novo e sem nome (tipicamente um novo separador). -
_parent— Abre a ligação no contexto de navegação pai, ou_selfse não houver pai. -
_top— Abre a ligação no contexto de navegação superior, ou_selfse não houver antecessor.
Se precisar de direcionar para uma frame ou janela nomeada específica, simplesmente use um nome sem um sublinhado inicial. Qualquer string que não comece com _ é tratada como um contexto de navegação nomeado válido.
Exemplos
Incorreto: Palavra-chave reservada inválida
Estes exemplos usam valores com prefixo sublinhado que não são palavras-chave reconhecidas:
<!-- Erro tipográfico: "_blanks" não é uma palavra-chave válida -->
<a href="https://example.com" target="_blanks">Example</a>
<!-- "_new" não é uma palavra-chave válida -->
<a href="https://example.com" target="_new">Open in new tab</a>
<!-- "_tab" não é uma palavra-chave válida -->
<a href="https://example.com" target="_tab">Open link</a>
Correto: Usar uma palavra-chave válida
<!-- Use "_blank" para abrir num novo separador -->
<a href="https://example.com" target="_blank">Example</a>
<!-- Use "_self" para abrir no mesmo separador (também o padrão) -->
<a href="https://example.com" target="_self">Example</a>
<!-- Use "_parent" para abrir na frame pai -->
<a href="https://example.com" target="_parent">Example</a>
<!-- Use "_top" para abrir na frame superior -->
<a href="https://example.com" target="_top">Example</a>
Correto: Usar um contexto de navegação nomeado personalizado
Se pretender direcionar para uma janela ou frame nomeada específica em vez de usar uma palavra-chave, remova o prefixo sublinhado:
<!-- Válido: "myframe" é um nome de contexto de navegação personalizado -->
<a href="https://example.com" target="myframe">Open in myframe</a>
<!-- Válido: direcionamento para um iframe nomeado -->
<iframe name="content-frame" src="about:blank"></iframe>
<a href="https://example.com" target="content-frame">Load in iframe</a>
Um erro comum é usar _new com a intenção de abrir uma ligação num novo separador. Embora alguns navegadores possam tratar _new de forma similar a _blank, não é uma palavra-chave válida. Use _blank em vez disso. Note que ao usar target="_blank", é uma boa prática de segurança incluir também rel="noopener" (embora os navegadores modernos agora façam isto por padrão):
<a href="https://example.com" target="_blank" rel="noopener">Example</a>
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.