¿Está bien usar target = "_ blank" en HTML5?

165

Recuerdo haber leído en alguna parte que en HTML5 ya no estaba bien usarlo target="_blank"en HTML5, pero no puedo encontrarlo ahora.

¿Está bien seguir usándolo target="_blank"?

Sé que generalmente se considera una mala idea, pero es la manera más fácil de abrir una nueva ventana para algo como un PDF, y tampoco requiere que confíes en JavaScript.

Darryl Hein
fuente
55
En general, si desea abrir un sitio externo desde su sitio, abrir una nueva ventana (que probablemente sea una nueva pestaña en la mayoría de los navegadores en este momento) es una mejor idea en mi opinión.
hobbes3
77
@ hobbes3, deja de molestar mi navegación y mi historial. Soy yo quien está navegando, y soy yo quien decide si un enlace debe abrirse en una nueva pestaña (clic central) o en la misma pestaña (clic izquierdo). Cuando me encuentre con un sitio web que me obligue a seguir su "práctica recomendada legítima" abriendo cada enlace en nuevas pestañas, me iré de inmediato y con gusto.
Albireo
9
@Albireo, es solo mi opinión y algunos servicios web populares también incorporan la misma idea. Por ejemplo, al hacer clic en un enlace de su correo en Gmail, se abre una nueva ventana de forma predeterminada.
hobbes3
12
@Albireo está asumiendo que el usuario siempre es tan avanzado y experto en tecnología como usted.
Mike Campbell
3
Hay una razón por la cual targetet al. existe. A veces son una necesidad. Una página generada dinámicamente con JS con estado, por ejemplo, donde un iframe es menos deseable que una nueva pestaña (por ejemplo, ver un PDF, como dice el OP). O cuando un sitio seguro (como un banco) lo envía a un enlace externo pero no permite el uso del botón Atrás debido a la expiración del contenido. Como todas las cosas, este atributo HTML no es una "mala idea" de usar, pero debe usarse con cuidado y cuidado, como con cada biblioteca, clase, función y propiedad en toda la programación.
s.co.tt

Respuestas:

159

Parece que target="_blank"todavía está bien. Aparece como una palabra clave de contexto de navegación en el último borrador de HTML5 .

Miguel
fuente
54
target="_blank"hará que se abra una nueva ventana cada vez que el usuario haga clic en el enlace. A menos que esto sea realmente lo que quiere que suceda (y rara vez lo es), considere usarlo target="somethingUnique"para que el usuario solo pueda abrir una ventana, incluso si hace clic en el enlace varias veces. Es una experiencia de usuario mucho más agradable.
BanksySan
44
@BanksySan: Un ejemplo en el que creo que target="_blank"es bueno es compartir botones.
Martin Thoma el
Si estoy leyendo un artículo largo y hay una referencia a alguna información relacionada en otro sitio (o el mismo sitio). A menudo quiero saltar de un lado a otro sin perder mi lugar en el artículo original. target = "_ blank" es perfecto para esto. Salir de la página y tener que recargar alternativamente cada página (a menudo perder mi lugar en cualquiera de las páginas), no lo es. Sí, sé que puedo hacer clic con el botón derecho en el enlace y abrirlo en una nueva pestaña, pero no quiero hacerlo porque romperá mi concentración, y sospecho que la mayoría de los usuarios de la web no saben cómo hacerlo.
Bob Ray
El atributo objetivo tiene muchos beneficios. No voy a preguntar eso. Los anunciantes emergentes destruyeron su propósito, pero hoy con tantos servicios dejando de lado la experiencia de navegación, muchas personas no quieren abandonar el artículo o la pestaña actual, pero aún interactúan con el PDF o video de descarga pesada. Al usar _blank, asegúrese de dejar que el usuario complete una pestaña vacía, sin anular el contenido actual, si sirve muchos enlaces en la misma sesión / sitio. Los nombres únicos son desordenados en una lista de audio con 90 canciones ... Viva la target, viva la _blank ...
Jonas Lundman
91

Está bien usarlo target="_blank"; Esto se eliminó en XHTML porque apuntar a nuevas ventanas siempre mostrará la alerta emergente en la mayoría de los navegadores. XHTML siempre mostrará un error con el atributo de destino en una validación.

HTML 5 lo trajo de vuelta porque todavía lo usamos. Es nuestro amigo y no podemos dejarlo ir.

Nunca dejar ir.

Graham
fuente
Lo que reclamas solo es válido para HTML estricto.
qwertzman
Para XHTML así como para HTML.
MEMark
15

Aunque target="_blank"es aceptable en HTML5 , personalmente trato de nunca usarlo (incluso para abrir archivos PDF en una nueva ventana).

HTML debería definir significado y contenido . Pregúntese: "¿cambiaría el significado del aelemento si targetse eliminara el atributo?" Si no, el código no debería ir en el HTML. (De hecho, me sorprende que el W3C se haya quedado ... Supongo que realmente no pueden soltarlo).

El comportamiento del navegador , específicamente, el comportamiento interactivo con el usuario , debe implementarse con lenguajes de script del lado del cliente como JavaScript. Como desea que el navegador se comporte de una manera particular, es decir, abrir una nueva ventana, debe usar JS. Pero como mencionó, este comportamiento requiere que el navegador confíe en JS. (Aunque si su sitio se degrada con gracia, o mejora progresivamente, o lo que sea , entonces todavía debería estar bien. Los usuarios con JS deshabilitado no se perderán mucho).

Dicho esto, ninguno de estos es la respuesta correcta. En algún lugar está la opinión de que el usuario final debe decidir cómo se abre un enlace . Toma este ejemplo.

Estás navegando en Wikipedia, profundizando cada vez más en una madriguera de conejo. Te encuentras con un enlace en tu lectura.

Digamos que desea hojear la página vinculada muy rápido antes de volver. Puede abrirlo en una nueva pestaña y luego cerrarlo cuando haya terminado (porque presionar el botón 'atrás' y esperar la recarga de la página lleva demasiado tiempo). O bien, ¿qué pasa si parece interesante y desea guardarlo para más tarde? Tal vez debería abrirlo en una nueva pestaña de fondo y seguir leyendo la página actual. O, tal vez decidas que has terminado de leer esta página, así que solo seguirás el enlace en la pestaña actual.

El punto es que tiene su propio flujo de trabajo y desea que su navegador se comporte en consecuencia. Puede sentirse bastante frustrado si toma este tipo de decisiones por usted.

Dicho esto, los desarrolladores web deben dejar absolutamente claro a dónde van sus enlaces, a qué tipos y / o formatos de fuentes hacen referencia y qué hacen. La información sobre herramientas puede ser su amigo (a menos que esté usando una tableta o un teléfono; en ese caso, especifíquelos en el sitio móvil). Todos sabemos cuánto apesta ser llevado a un lugar que no esperábamos o hacer que algo suceda que no queríamos.

chharvey
fuente
Y si alguien fue lo suficientemente inteligente como para diseñar un widget de usuario que le permitiera a uno ejercer muy fácilmente su derecho de control otorgado por Dios con cada enlace (fácilmente, como inconscientemente), entonces debería agregarse a los navegadores y todas las etiquetas <a> podrían proporcionarla.
Mark Goldfain
Esta respuesta es lógica y arquitectónicamente la más precisa, en mi opinión. En un mundo ideal, los autores deberían estar más preocupados por la identificación semántica adecuada de los fragmentos, y menos por predeterminar el comportamiento de los fragmentos. En el universo emergente de contenido adaptativo, los comportamientos de la ventana pueden depender de qué tema receptivo o preferencia de usuario esté vigente en el momento de la solicitud; la "cosa" semántica saliente se modifica solo según sea necesario por transformación (DOM o regex, servidor o navegador). De esta manera, los comportamientos de la ventana PUEDEN depender del usuario en lugar de un autor en un CMS.
Don Day
12

es la manera más fácil de abrir una nueva ventana para algo como un PDF

También es la forma más fácil de molestar a los usuarios que no son de Windows. PDF abierto muy bien en navegadores en otras plataformas. Abrir una nueva ventana también arruina el historial de navegación y complica las cosas en plataformas más pequeñas como los teléfonos inteligentes.

NO abra nuevas ventanas para cosas como PDF solo porque las versiones anteriores de Windows estaban rotas.

Homero
fuente
11
¿Sabes qué ayuda cuando le dices a la gente que no use algo? Mostrándoles lo que a usar, el HTML5 descarga de atributos: <a download="[file nombre here]" href="file.ext"> etc </a> .
John
5

La mayoría de los desarrolladores web target="_blank"solo usan para abrir enlaces en una nueva pestaña. Si target="_blank"solo usa para abrir enlaces en una nueva pestaña, entonces es vulnerable a un atacante. Cuando abre un enlace en una nueva pestaña ( target="_blank"), la página que se abre en una nueva pestaña puede acceder a la pestaña inicial y cambiar su ubicación utilizando la window.openerpropiedad.

Código Javascript:

window.opener.location.replace(malicious URL)

Prevención:

rel="nofollow noopener noreferrer"
Vamshi Krishna
fuente
No estoy seguro de que nofollow esté relacionado con la seguridad, es para bots de motores de búsqueda.
Darryl Hein
4

Si bien el objetivo sigue siendo aceptable en HTML5, no se prefiere. Para vincular a un archivo PDF, use el atributo de descarga en lugar del atributo de destino.

Aquí hay un ejemplo:

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

Si el nombre del archivo original está codificado para un almacenamiento de archivos único, puede especificar un nombre de descarga fácil de usar asignando un valor al atributo de descarga:

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

Tenga en cuenta que, si bien la mayoría de los navegadores modernos admiten esta función, algunos pueden no serlo. Ver caniuse.com para obtener más información.

kojow7
fuente
0

Puede hacerlo de la siguiente manera con jquery, esto lo abrirá en una nueva ventana:

<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 Hernández Osorio
fuente
¿Por qué no agregar un formulario alrededor del botón con target = "_ blank". Parece que eso sería más fácil y eliminaría la necesidad de JS.
Darryl Hein
-1

Creo que el atributo de destino está en desuso para el <link>elemento, no <a>, probablemente es por eso que escuchaste que ya no se debe usar.

Erik Bi
fuente