Tudo bem usar target = "_ blank" no HTML5?

165

Lembro-me de ler em algum lugar que, no HTML5, não era mais aceitável usá-lo target="_blank"no HTML5, mas não consigo encontrá-lo agora.

Está tudo bem continuar usando target="_blank"?

Sei que geralmente é uma má ideia, mas é a maneira mais fácil de abrir uma nova janela para algo como um PDF e também não exige que você confie no JavaScript.

Darryl Hein
fonte
5
Bem, geralmente, se você deseja abrir um site externo, abrir uma nova janela (que provavelmente é uma nova guia na maioria dos navegadores hoje em dia) é uma ideia melhor na minha opinião.
hobbes3
7
@ hobbes3, por favor, pare de mexer na minha navegação e na minha história. Sou eu quem navega e sou eu quem decide se um link deve ser aberto em uma nova guia (clique do meio) ou na mesma guia (clique esquerdo). Quando me deparei com um site que me obriga a seguir suas "práticas recomendadas", abrindo todos os links em novas guias, partirei pronta e com prazer.
Albireo 24/01
9
@ Albireo, é apenas a minha opinião e alguns serviços da web populares incorporam a mesma idéia também. Por exemplo, clicar em um link no seu e-mail no Gmail abre uma nova janela por padrão.
precisa saber é o seguinte
12
@Albireo, você está assumindo que o usuário é sempre tão avançado e conhecedor de tecnologia quanto você.
Mike Campbell
3
Há uma razão pela qual targetet al. existir. Às vezes são uma necessidade. Uma página gerada dinamicamente com JS com estado, por exemplo, onde um iframe é menos desejável que uma nova guia (por exemplo, visualização de um PDF, como o OP indica). Ou quando um site seguro (como um banco) envia você para um link externo, mas não permite o uso do botão voltar devido à expiração do conteúdo. Como todas as coisas, esse atributo HTML não é uma "má idéia" a ser usada, mas deve ser usada com muito cuidado e cuidado, como em todas as bibliotecas, classes, funções e propriedades de toda a programação.
s.co.tt

Respostas:

159

Parece que target="_blank"ainda está tudo bem. Ele é listado como uma palavra-chave do contexto de navegação no rascunho HTML5 mais recente .

Mike
fonte
54
target="_blank"fará com que uma nova janela seja aberta sempre que o usuário clicar no link. A menos que isso seja realmente o que você deseja que aconteça (e raramente é), considere usar target="somethingUnique"para que o usuário obtenha apenas uma janela, mesmo se clicar no link várias vezes. Faz para um UX muito melhor.
BanksySan
4
@BanksySan: Um exemplo em que acho target="_blank"bom é o compartilhamento de botões.
Martin Thoma
Se estou lendo um longo artigo e há uma referência a algumas informações relacionadas em outro site (ou no mesmo site). Muitas vezes eu quero ir e voltar entre os dois sem perder meu lugar no artigo original. target = "_ blank" é perfeito para isso. Sair da página e ter que recarregar cada página alternadamente (geralmente perdendo meu lugar em qualquer uma das páginas) não é. Sim, eu sei que posso clicar com o botão direito do mouse no link e abri-lo em uma nova guia, mas não quero, porque isso interromperá minha concentração e suspeito que a maioria dos usuários da Web não saiba como.
Bob Ray
O atributo de destino tem muitos benefícios. Eu não vou disq isso. Os anunciantes pop-up destruíram seu objetivo, mas hoje com tantos serviços deixando de lado a experiência de navegação, muitas pessoas não querem sair do artigo ou da guia atual, mas ainda interagem com o pesado download de PDF ou vídeo. Usando _blank, certifique-se de permitir que o usuário preencha uma guia vazia - não substitua o conteúdo atual, se você exibir muitos links na mesma sessão / site. Nomes exclusivos são apenas bagunçado em uma lista de áudio com 90 canções .... Viva la-alvo, viva la _blank ...
Jonas Lundman
91

Está tudo bem em usar target="_blank"; Isso foi eliminado no XHTML porque o direcionamento de novas janelas sempre exibirá o alerta pop-up na maioria dos navegadores. XHTML sempre mostrará um erro com o atributo target em uma validação.

O HTML 5 trouxe de volta porque ainda o usamos. É nosso amigo e não podemos deixar ir.

Nunca deixe ir.

Graham
fonte
O que você afirma é válido apenas para HTML estrito.
Qwertzman 17/05
Para XHTML e também para HTML.
MEMark
15

Embora target="_blank"seja aceitável no HTML5 , eu pessoalmente tento nunca usá-lo (mesmo para abrir PDFs em uma nova janela).

HTML deve definir significado e conteúdo . Pergunte a si mesmo: "o significado do aelemento mudaria se o targetatributo fosse removido?" Caso contrário, o código não deve entrar no HTML. (Na verdade, estou surpreso que o W3C tenha mantido ... acho que eles realmente não podem deixar ir.)

O comportamento do navegador , especificamente o comportamento interativo com o usuário , deve ser implementado com linguagens de script do lado do cliente, como JavaScript. Como você deseja que o navegador se comporte de uma maneira específica, ou seja, abrir uma nova janela, você deve usar o JS. Mas, como você mencionou, esse comportamento requer que o navegador dependa de JS. (Embora se o seu site se degradar normalmente ou melhorar progressivamente ou o que for , ele ainda deve estar bom. Os usuários com o JS desativado não perderão muito.)

Dito isto, nenhuma dessas é a resposta certa. Em algum lugar, existe a opinião de que a forma como um link é aberto deve ser decidido pelo usuário final . Veja este exemplo.

Você está navegando na Wikipedia, cada vez mais fundo em uma toca de coelho. Você encontra um link em sua leitura.

Digamos que você queira folhear a página vinculada rapidamente, antes de voltar. Você pode abri-lo em uma nova guia e fechá-lo quando terminar (porque pressionar o botão 'voltar' e aguardar o recarregamento da página leva muito tempo). Ou, se parecer interessante e você quiser salvá-lo para mais tarde? Talvez você deva abri-lo em uma nova guia em segundo plano e continuar lendo a página atual. Ou talvez você decida terminar de ler esta página, basta seguir o link na guia atual.

O ponto é que você tem seu próprio fluxo de trabalho e deseja que seu navegador se comporte de acordo. Você pode ficar bastante frustrado se tomar esse tipo de decisão por você.

Dito isto, os desenvolvedores da Web devem deixar absolutamente claro para onde vão seus links, que tipos e / ou formatos de fontes referenciados e o que fazem. As dicas de ferramentas podem ser suas amigas (a menos que você esteja usando um tablet ou telefone; nesse caso, especifique-as no site para celular). Todos sabemos o quanto é péssimo levar para algum lugar que não estávamos esperando ou fazer algo acontecer que não pretendíamos.

chharvey
fonte
E se alguém fosse esperto o suficiente para projetar um widget de usuário que permitisse exercer com muita facilidade seu direito de controle dado por Deus a cada link (facilmente, como no subconsciente), ele deveria ser adicionado aos navegadores e todas as tags <a> poderiam forneça.
Mark Goldfain
Essa resposta é lógica e arquitetonicamente a mais precisa, na minha opinião. Em um mundo ideal, os autores devem se preocupar mais com a identificação semântica adequada dos pedaços, e menos com a predeterminação do comportamento dos pedaços. No universo emergente de conteúdo adaptativo, os comportamentos de janela podem depender de qual tema responsivo ou preferência do usuário está em vigor no momento da solicitação; a "coisa" semântica de saída é modificada apenas conforme necessário pela transformação (DOM ou regex, servidor ou navegador). Dessa maneira, os comportamentos da janela PODEM depender do usuário e não do autor de um CMS.
Don Dia
12

é a maneira mais fácil de abrir uma nova janela para algo como um PDF

É também a maneira mais fácil de incomodar usuários que não são Windows. O PDF abre bem nos navegadores de outras plataformas. Abrir uma nova janela também atrapalha o histórico de navegação e complica o assunto em plataformas menores, como smartphones.

NÃO abra novas janelas para itens como PDF, apenas porque as versões mais antigas do Windows foram quebradas.

Homer
fonte
11
Sabe o que ajuda quando você diz às pessoas para não usarem algo? Mostrando a eles o que usar, o atributo de download do HTML5: <a download="[nome do arquivo aqui ♡" href="file.ext"> etc </a> .
John
5

A maioria dos desenvolvedores da Web usa target="_blank"apenas para abrir links em uma nova guia. Se você usar target="_blank"apenas para abrir links em uma nova guia, ficará vulnerável a um invasor. Quando você abre um link em uma nova guia ( target="_blank"), a página que é aberta em uma nova guia pode acessar a guia inicial e alterar sua localização usando a window.openerpropriedade

Código Javascript:

window.opener.location.replace(malicious URL)

Prevenção:

rel="nofollow noopener noreferrer"
Vamshi Krishna
fonte
Não sei se o nofollow está relacionado à segurança - é para robôs de mecanismo de pesquisa.
Darryl Hein
4

Embora o destino ainda seja aceitável no HTML5, ele não é o preferido. Para vincular a um arquivo PDF, use o atributo de download em vez do atributo de destino.

Aqui está um exemplo:

<a href="files/invoice.pdf" download>Invoice</a>

Se o nome do arquivo original estiver codificado para armazenamento de arquivo exclusivo, você poderá especificar um nome de download fácil de usar, atribuindo um valor ao atributo de download:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>

Lembre-se de que, embora a maioria dos navegadores modernos ofereça suporte a esse recurso, alguns podem não. Veja caniuse.com para mais informações.

kojow7
fonte
0

Você pode fazê-lo da seguinte maneira com jquery, isso será aberto em uma nova janela:

<input type="button" id="idboton" value="google" name="boton" /> 

<script type="text/javascript">
    $('#idboton').click(function(){
        window.open('https://www.google.com.co');
    });

</script>
Johan Stiven Hernandez Osorio
fonte
Por que não adicionar um formulário ao redor do botão com target = "_ blank". Parece que isso seria mais fácil e eliminaria a necessidade de JS.
Darryl Hein
-1

Eu acho que o atributo target está obsoleto para o <link>elemento, não <a>, provavelmente é por isso que você ouviu que ele não deveria mais ser usado.

Erik Bi
fonte