Sobre este problema HTML
O atributo target especifica onde mostrar o recurso ligado. A especificação HTML define um conjunto de palavras-chave reservadas que começam todas com um underscore: _blank, _self, _parent e _top. Qualquer outro valor que comece com underscore é considerado inválido porque o prefixo underscore é 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 prefixados com underscore não reconhecidos 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 entre diferentes navegadores. Segundo, utilizar palavras-chave reservadas mas indefinidas sinaliza um provável erro de digitação ou mal-entendido do atributo, que pode fazer com que a navegação se comporte de forma diferente da pretendida. 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 (o comportamento predefinido). -
_blank— Abre a ligação num novo contexto de navegação sem nome (tipicamente num 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 mais alto, ou_selfse não houver ancestral.
Se precisar de direcionar uma frame ou janela nomeada específica, utilize simplesmente um nome sem um underscore 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 utilizam valores prefixados com underscore que não são palavras-chave reconhecidas:
<!-- Erro de digitação: "_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: Utilizando 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 predefinido) -->
<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 mais alta -->
<a href="https://example.com" target="_top">Example</a>
Correto: Utilizando um contexto de navegação nomeado personalizado
Se pretende direcionar uma janela ou frame nomeada específica em vez de utilizar uma palavra-chave, remova o prefixo underscore:
<!-- Válido: "myframe" é um nome de contexto de navegação personalizado -->
<a href="https://example.com" target="myframe">Open in myframe</a>
<!-- Válido: direcionando 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 é utilizar _new com a intenção de abrir uma ligação num novo separador. Embora alguns navegadores possam tratar _new de forma semelhante a _blank, não é uma palavra-chave válida. Utilize _blank em vez disso. Note que ao utilizar target="_blank", é uma boa prática de segurança incluir também rel="noopener" (embora os navegadores modernos agora façam isto por predefiniçã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.