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

512

¿Cuál es la diferencia entre <a target="_new">y <a target="_blank">que debo usar si solo quiero abrir un enlace en una nueva pestaña / ventana?

Alex Grin
fuente
73
Resumen de respuestas actuales: _newno tiene ningún significado especial. Podrías escribir _white_little_lambtambién.
Álvaro González
10
@ x3ro ¿Cómo se equivoca al decir que " _new" no tiene ningún significado especial?
Álvaro González
3
@ ÁlvaroG.Vicario Me refería a "Podrías escribir ... en su lugar". Pero pensando en ello, diría que "no tiene un significado especial" no es lo mismo que "está desanimado explícitamente", pero eso podría ser un poco tonto;)
fresskoma
55
Me gustaría recordar a todos que usar target="_blank"sin rel="noopener"es una vulnerabilidad potencial de seguridad. Busque para rel="noopener"aprender más.
Flimm

Respuestas:

651

Use "_blank"

De acuerdo con la especificación HTML5 :

Un nombre de contexto de exploración válido es cualquier cadena con al menos un carácter que no comience con un carácter LÍNEA BAJA U + 005F. (Los nombres que comienzan con un guión bajo están reservados para palabras clave especiales).

Un nombre o palabra clave de contexto de exploración válido es cualquier cadena que sea un nombre de contexto de exploración válido o que sea una coincidencia entre mayúsculas y minúsculas ASCII para uno de: _blank, _self, _parent o _top. "- Fuente

Eso significa que no existe una palabra clave como _newen HTML5, y tampoco en HTML4 (y en consecuencia XHTML) . Eso significa que no habrá ningún comportamiento coherente si lo usa como un valor para el atributo de destino.

Recomendación de seguridad

Como Daniel y Michael han señalado en los comentarios, cuando se utiliza el objetivo que _blankapunta a un sitio web no confiable, también debe configurarlo rel="noopener". Esto evita que el sitio de apertura se meta con el abridor a través de JavaScript. Vea esta publicación para más información.

Fresskoma
fuente
77
Dejar el texto en negrita de la especificación hace que esa cita suene confusamente circular. Lo leí como "A valid browsing context nameo palabra clave es cualquier cadena que sea una valid browsing context nameo ...."
Alex Grin
66
@lyoshenka, @ x3ro: Me tomé la libertad de agregar el párrafo anterior a la cita. Eso debería aclarar la confusión.
mercator
55
@aesede: Lea la especificación. Son no válida, porque "my_custom_name" no puede ir seguida por un guión. Por lo tanto, "nuevo" estaría bien, pero "_nuevo" no lo está.
fresskoma 03 de
77
Por seguridad, esta es una lectura importante mathiasbynens.github.io/rel-noopener
Daniel F
66
Considere agregar que las personas también deberían agregar rel="noopener noreferrer"debido a la vulnerabilidad de ataque javascript detarget="_blank"
Michael
126

El uso le target="_blank"indicará al navegador que cree una nueva pestaña o ventana del navegador cuando el usuario haga clic en el enlace.

El uso target="_new"es técnicamente inválido según las especificaciones, pero que yo sepa, cada navegador se comportará de la misma manera:

  • buscará una pestaña o ventana con el nombre de contexto "_nuevo"
  • si se encuentra una pestaña / ventana "_nuevo", la URL se carga en ella
  • si no se encuentra, se crea una nueva pestaña / ventana con el nombre de contexto "_nuevo" y la URL cargada en él

Note target="_new"se comportará exactamente igual target="new"y el último es HTML válido, mientras que el primero es HTML no válido.

Añadiendo algo de confusión a esto, en HTML4 el targetatributo quedó en desuso. En HTML5 esta decisión fue revertida, y es una parte oficial de la especificación una vez más. Todos los navegadores son compatibles targetsin importar qué versión de HTML esté utilizando, pero algunos validadores marcarán el uso como obsoleto si su doctype es HTML4.

Abhi Beckert
fuente
44
Entonces, básicamente, si tengo dos (o más) enlaces target="_new", ¿ambos se abrirán en la misma pestaña, uno sobrescribiendo al otro?
art-solopov
44
@ art-solopov, que yo sepa, sí, eso es lo que sucederá en cada navegador. Sin embargo, "_nuevo" es un valor ilegal para un objetivo, así que no lo hagas.
Abhi Beckert
25

TL; DR
USE _blank

El atributo de destino especifica dónde abrir el 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

Dado que "_new" no es ninguno de estos, VENDRÁ BAJO "framename", por lo que si un usuario vuelve a hacer clic en ese hipervínculo, no abrirá una nueva pestaña sino que actualizará la pestaña existente. Mientras que en _blank si el usuario hace clic dos veces, se abren 2 pestañas nuevas.

abe312
fuente
21

Sé que esta es una vieja pregunta y la respuesta correcta, uso _blank, se ha mencionado varias veces, pero el uso <a target="somesite.com" target="_blank">Link</a> es un riesgo de seguridad .

Se recomienda ( beneficios de rendimiento ) usar:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>
Michal Frystacky
fuente
1
Solo algunas lecturas adicionales sobre el aspecto del riesgo de seguridad: jitbit.com/alexblog/…
8bithero
14

Esto puede haberse preguntado antes pero:

"cada enlace que especifica target =" _ new "busca y encuentra esa ventana por nombre, y se abre en ella.

Si usa target = "_ blank," se creará una nueva ventana cada vez, encima de la ventana actual ".

desde aquí: http://thedesignspace.net/MT2archives/000316.html

corroído
fuente
12

target="_blank" abre una nueva pestaña en la mayoría de los navegadores.

Abudayah
fuente
12

Tengo entendido que target = whateverbuscará un marco / ventana con ese nombre. Si no se encuentra, se abrirá una nueva ventana con ese nombre. Si whatever == "_new", aparecerá como si lo usaras _blankexcepto .....

El uso de uno de los nombres de destino reservados omitirá la fase de "búsqueda". Entonces, target = "_blank"en una docena de enlaces se abrirán una docena de ventanas en blanco, pero target = whateveren una docena de enlaces solo se abrirá una ventana. target = "_new"en una docena de enlaces puede dar un comportamiento inconstante. No lo he probado en varios navegadores, pero solo debería abrir una ventana.

Al menos así es como interpreto las reglas.

el hámster
fuente
9

Precaución: recuerde incluir siempre las "comillas", al menos en Chrome, target=_blank(sin comillas) NO ES LO MISMO que target="_blank"(con comillas).

Este último abre cada enlace en una nueva pestaña / ventana. La primera (comillas faltantes) abre el primer enlace en el que hace clic en una nueva pestaña / ventana, luego sobrescribe esa misma pestaña / ventana con cada enlace posterior que hace clic (que también se nombra con las comillas faltantes).

cnd
fuente
Muy buen punto. Me encontré con este problema cuando no incluí el _blank entre comillas. El enlace en el que hice clic desde mi pestaña "en blanco" recién creada fue sobre escribir contenido dentro de esa pestaña en lugar de abrir una pestaña nueva. El encerrar el _blank entre comillas obliga a Chrome a abrir una nueva pestaña cada vez.
Steve Scherer
Además, asegúrese de usar "_blank" no "_BLANK". Chrome en realidad es exigente con el caso y no abrirá una nueva pestaña usando "_BLANK" varias veces.
Steve Scherer
5
  • _blank como valor objetivo generará una nueva ventana cada vez,
  • _new solo generará una nueva ventana.

Además, cada enlace en el que se haga clic con un valor objetivo de _new reemplazará la página cargada en la ventana generada anteriormente.

Puede hacer clic aquí Cuándo usar _blank o _new para probarlo usted mismo.

James Drinkard
fuente
¿Puedes enumerar qué navegadores cumplen _newcomo se describe?
Dima Tisnek
@qarma Ese comportamiento es como se describe en todos los navegadores que conozco, _newno es una palabra clave mágica, es solo un nombre, si existe una ventana con ese nombre lo reutilizará, de lo contrario lo abrirá. Al hacer clic en varios enlaces para esa ventana, solo se abrirán diferentes páginas en la ventana con nombre, en lugar de abrir varias páginas nuevas.
scragar
En realidad, la especificación sugiere a los navegadores que se ignoredirigen a ellos que comienzan con subrayado pero no son palabras clave. No hay sugerencias sobre lo que debe hacer un navegador cuando "ignora" un nombre de destino no válido. Las posibilidades incluyen: (1) tratarlo como "_blank" (2) tratarlo como un nombre de ventana (como si no hubiera un guión bajo ilegal) (3) tratarlo como un nombre de ventana explícitamente vacío (4) tratarlo como allí no era un atributo objetivo - Cualquier navegador podría elegir cualquiera de las interpretaciones.
Jesse Chisholm
0

El atributo de destino de un enlace obliga al navegador a abrir la página de destino en una nueva ventana del navegador. El uso _blankcomo valor objetivo generará una nueva ventana cada vez, mientras que el uso _newsolo generará una nueva ventana y cada enlace que se _newhaga clic con un valor objetivo reemplazará la página cargada en la ventana generada anteriormente

Carlos Guzman
fuente
0

Para abrir un enlace en una nueva pestaña / ventana que usará <a target="_blank">.

valor _blank= contexto de navegación dirigido: uno nuevo: pestaña o ventana dependiendo de su configuración de navegación

valor _new= no válido; no existe dicho valor en HTML5 para el atributo de destino en un elemento

atributo de destino con todos sus valores en un elemento: demostración de video

Daniel
fuente
-1

El uso de _New es útil cuando se trabaja en páginas con iframed. Dado que target = "_ blank" no funciona y abre la página en el mismo iframe ... target new es la mejor solución para las páginas de Iframe. Solo mis cinco centavos.

Ozzy Gonzalez
fuente