target = "_ blank" vs. target = "_ new"

512

Qual é a diferença entre <a target="_new">e <a target="_blank">e qual devo usar se quiser apenas abrir um link em uma nova guia / janela?

Alex Grin
fonte
73
Resumo das respostas atuais: _newnão tem nenhum significado especial. Você poderia escrever _white_little_lambtambém.
Álvaro González
10
@ x3ro Como é que é errado dizer que " _new" não tem nenhum significado especial?
Álvaro González
3
@ ÁlvaroG.Vicario Eu estava me referindo a "Você poderia escrever ... em vez disso". Mas pensar sobre isso, eu diria que "não tem nenhum significado especial" não é o mesmo que "é explicitamente desencorajado", mas que poderia ser me nitpicking;)
fresskoma
5
Gostaria de lembrar a todos que usar target="_blank"sem rel="noopener"é uma potencial vulnerabilidade de segurança. Pesquise para rel="noopener"saber mais.
Flimm

Respostas:

651

Use "_blank"

De acordo com a especificação HTML5 :

Um nome de contexto de navegação válido é qualquer sequência com pelo menos um caractere que não comece com um caractere U + 005F LOW LINE. (Os nomes que começam com um sublinhado são reservados para palavras-chave especiais.)

Um nome ou palavra - chave de contexto de navegação válido é qualquer string que seja um nome de contexto de navegação válido ou uma correspondência que não diferencia maiúsculas de minúsculas ASCII para um dos seguintes: _blank, _self, _parent ou _top. "- Origem

Isso significa que não existe uma palavra-chave como _newno HTML5 e nem no HTML4 (e consequentemente no XHTML) . Isso significa que não haverá comportamento consistente, se você usar isso como um valor para o atributo de destino.

Recomendação de segurança

Como Daniel e Michael apontaram nos comentários, ao usar o alvo _blankapontando para um site não confiável, você também deve definir rel="noopener". Isso impede que o site de abertura mexa com o abridor via JavaScript. Veja este post para mais informações.

fresskoma
fonte
7
Deixar de fora o texto em negrito da especificação faz com que essa citação pareça confusa e circular. Eu li como "A valid browsing context nameou palavra-chave é qualquer string que seja um valid browsing context nameou ...."
Alex Grin
6
@lyoshenka, @ x3ro: Tomei a liberdade de adicionar o parágrafo anterior à citação. Isso deve esclarecer a confusão.
mercator
5
@aesede: Leia as especificações. Eles não são válidos porque "my_custom_name" não pode ser prefixado com um sublinhado. Assim, "novo" seria bom, mas "_novo" não é!
Fresskoma
7
Securitywise esta é uma importante leitura mathiasbynens.github.io/rel-noopener
Daniel F
6
Por favor, considere acrescentando que as pessoas também deve adicionar rel="noopener noreferrer"devido à vulnerabilidade de ataque javascript detarget="_blank"
Michael
126

O uso target="_blank"instruirá o navegador a criar uma nova guia ou janela do navegador quando o usuário clicar no link.

O uso target="_new"é tecnicamente inválido de acordo com as especificações, mas, tanto quanto eu sei, todos os navegadores se comportarão da mesma maneira:

  • ele procurará uma guia ou janela com o nome de contexto "_new"
  • se uma guia / janela "_new" for encontrada, o URL será carregado nela
  • se não for encontrado, uma nova guia / janela será criada com o nome de contexto "_new" e o URL carregado nela

A nota target="_new"se comportará exatamente da mesma forma que target="new", e o último é HTML válido, enquanto o anterior é HTML inválido.

Adicionando alguma confusão a isso, no HTML4 o targetatributo foi preterido. No HTML5, essa decisão foi revertida e é uma parte oficial da especificação mais uma vez. Todos os navegadores oferecem suporte, targetindependentemente da versão do HTML que você está usando, mas alguns validadores sinalizam o uso como obsoleto se o seu tipo de documento for HTML4.

Abhi Beckert
fonte
4
Então, basicamente, se eu tiver dois (ou mais) links com target="_new", os dois abrirão na mesma guia, um substituindo o outro?
Art-solopov
4
@ art-solopov até onde eu sei, sim, é isso que acontecerá em todos os navegadores. No entanto, "_new" é um valor ilegal para um destino, portanto não faça isso.
Abhi Beckert
25

TL; DR
USE _blank

O atributo target especifica onde abrir o documento vinculado.

USAGE: target="xyz"  [don't forget double quotes]

_blank  Opens the linked document in a new window or tab
_self   Opens the linked document in the same frame as it was clicked (this is default)
_parent     Opens the linked document in the parent frame
_top    Opens the linked document in the full body of the window 
framename   Opens the linked document in a named frame

DESDE QUE "_new" não seja um desses, VIRÁ SOB "framename", portanto, se um usuário clicar novamente nesse hiperlink, ele não abrirá uma nova guia, em vez disso, atualizará a guia existente. Enquanto em _blank, se o usuário clicar duas vezes, duas novas guias serão abertas.

abe312
fonte
21

Sei que essa é uma pergunta antiga e a resposta correta, uso _blank, foi mencionada várias vezes, mas o uso <a target="somesite.com" target="_blank">Link</a> é um risco à segurança .

É recomendável ( benefícios de desempenho ) usar:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>
Michal Frystacky
fonte
1
Apenas algumas leituras adicionais sobre o aspecto de risco à segurança: jitbit.com/alexblog/…
8bithero
14

Isso pode ter sido solicitado antes, mas:

"todo link que especifica target =" _ new "procura e encontra a janela pelo nome e abre nela.

Se você usar target = "_ blank", uma nova janela será criada a cada vez, na parte superior da janela atual. "

daqui: http://thedesignspace.net/MT2archives/000316.html

corroído
fonte
12

target="_blank" abre uma nova guia na maioria dos navegadores.

Abudayah
fonte
12

é meu entendimento que target = whateverprocurará um quadro / janela com esse nome. Se não for encontrado, ele abrirá uma nova janela com esse nome. Se whatever == "_new", aparecerá como se você usasse, _blankexceto .....

O uso de um dos nomes de destino reservados ignorará a fase "aparência". Assim, target = "_blank"em uma dúzia de links abrirá uma dúzia de janelas em branco, mas target = whateverem uma dúzia de links abrirá apenas uma janela. target = "_new"em uma dúzia de links pode gerar um comportamento inconstante. Eu não tentei em vários navegadores, mas deveria abrir apenas uma janela.

Pelo menos é assim que interpreto as regras.

o Hampster
fonte
9

Cuidado - lembre-se de sempre incluir as "aspas" - pelo menos no Chrome, target=_blank(sem aspas) NÃO É O MESMO como target="_blank"(com aspas).

O último abre cada link em uma nova guia / janela. O primeiro (aspas ausentes) abre o primeiro link em que você clica em uma nova guia / janela e substitui a mesma guia / janela com cada link subsequente em que você clica (que também é nomeado com as aspas ausentes).

cnd
fonte
Muito bom ponto. Encontrei este problema quando não coloquei o _blank entre aspas. O link em que clicou na minha guia "em branco" recém-criada foi sobre a criação de conteúdo nessa guia, em vez de abrir uma nova guia. Colocar o _blank entre aspas força o chrome a abrir uma nova guia sempre.
Steve Scherer
Além disso, certifique-se de usar "_blank" e não "_BLANK". O Chrome é realmente exigente quanto ao caso e não abre uma nova guia usando "_BLANK" várias vezes.
9788 Steve Jobs -
5
  • _blank como valor-alvo gerará uma nova janela toda vez,
  • _new irá gerar apenas uma nova janela.

Além disso, todos os links clicados com o valor-alvo _new substituirão a página carregada na janela gerada anteriormente.

Você pode clicar aqui Quando usar _blank ou _new para experimentar por si mesmo.

James Drinkard
fonte
Você pode listar quais navegadores respeitam _newconforme descrito?
Dima Tisnek
@qarma Esse comportamento é como descrito em todos os navegadores que conheço, _newnão é uma palavra-chave mágica, é apenas um nome, se uma janela com esse nome existir, ela será reutilizada, caso contrário, será aberta. Clicar em vários links para essa janela abrirá apenas páginas diferentes na janela nomeada, em vez de abrir várias novas páginas.
scragar
As especificações sugerem aos navegadores que eles ignoresegmentam que começa com sublinhado, mas não são palavras-chave. Não há sugestões para o que um navegador deve fazer quando "ignora" um nome de destino inválido. As possibilidades incluem: (1) tratá-lo como "_blank" (2) tratá-lo como um nome de janela (como se não houvesse um sublinhado ilegal) (3) tratá-lo como um nome de janela explicitamente vazio (4) tratá-lo como lá não era um atributo de destino. - Qualquer navegador pode escolher qualquer uma das interpretações.
Jesse Chisholm
0

O atributo de destino de um link força o navegador a abrir a página de destino em uma nova janela do navegador. Usar _blankcomo valor-alvo gerará uma nova janela toda vez, enquanto o uso _newgerará apenas uma nova janela e todos os links clicados com um valor-alvo _newsubstituirão a página carregada na janela gerada anteriormente

Carlos Guzman
fonte
0

Para abrir um link em uma nova guia / janela, você utilizará <a target="_blank">.

value _blank= contexto de navegação direcionado: um novo: guia ou janela, dependendo das configurações de navegação

valor _new= inválido; não existe esse valor em HTML5 para o atributo de destino em um elemento

atributo target com todos os seus valores em um elemento: video demo

Daniel
fonte
-1

O uso de _New é útil ao trabalhar em páginas com iframed. Como target = "_ blank" não funciona e abre a página no mesmo iframe ... o target new é a melhor solução para as páginas do Iframe. Apenas meus cinco centavos.

Ozzy Gonzalez
fonte