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


512

Qual è la differenza tra <a target="_new">e <a target="_blank">e quale dovrei usare se voglio solo aprire un collegamento in una nuova scheda / finestra?


73
Riassunto delle risposte attuali: _newnon ha alcun significato speciale. Potresti anche scrivere _white_little_lamb.
Álvaro González,

10
@ x3ro Come può essere sbagliato dire che " _new" non ha alcun significato speciale?
Álvaro González,

3
@ ÁlvaroG.Vicario Mi riferivo a "Potresti scrivere ... invece". Ma a pensarci bene, direi che "non ha un significato speciale" non è lo stesso di "è esplicitamente scoraggiato", ma che potrei essere io che chiacchierò;)
fresskoma,

5
Vorrei ricordare a tutti che l'utilizzo target="_blank"senza rel="noopener"è una potenziale vulnerabilità della sicurezza. Cerca per rel="noopener"saperne di più.
Flimm,

Risposte:


651

Usa "_blank"

Secondo le specifiche HTML5 :

Un nome di contesto di esplorazione valido è qualsiasi stringa con almeno un carattere che non inizia con un carattere U + 005F LOW LINE. (I nomi che iniziano con un trattino basso sono riservati a parole chiave speciali.)

Un nome o parola chiave di contesto di esplorazione valido è una stringa che sia un nome di contesto di esplorazione valido o che sia una corrispondenza senza distinzione tra maiuscole e minuscole ASCII per uno di: _blank, _self, _parent o _top. "- Origine

Ciò significa che non esiste una parola chiave come _newin HTML5 e nemmeno in HTML4 (e di conseguenza XHTML) . Ciò significa che non ci sarà alcun comportamento coerente se lo si utilizza come valore per l'attributo target.

Raccomandazione di sicurezza

Come Daniel e Michael hanno sottolineato nei commenti, quando si utilizza target che _blankpunta a un sito Web non attendibile, è necessario, inoltre, impostare rel="noopener". Ciò impedisce al sito di apertura di pasticciare con l'apri tramite JavaScript. Vedi questo post per maggiori informazioni.


7
Tralasciando il testo in grassetto dalle specifiche, la citazione risulta confusamente circolare. L'ho letto come "A valid browsing context nameo parola chiave è una stringa che è o valid browsing context nameo ..."
Alex Grin,

6
@lyoshenka, @ x3ro: ho preso la libertà di aggiungere il paragrafo precedente alla citazione. Ciò dovrebbe chiarire la confusione.
mercatore,

5
@aesede: leggi le specifiche. Essi sono non valide, perché "my_custom_name" non può essere preceduto da un carattere di sottolineatura. Quindi "nuovo" andrebbe bene, ma "_new" non lo è!
fresskoma,

7
Dal punto di vista della sicurezza, questa è un'importante lettura mathiasbynens.github.io/rel-noopener
Daniel F

6
Ti preghiamo di aggiungere che le persone dovrebbero anche aggiungere a rel="noopener noreferrer"causa della vulnerabilità dell'attacco javascript ditarget="_blank"
Michael

126

L'uso target="_blank"indica al browser di creare una nuova scheda o finestra del browser quando l'utente fa clic sul collegamento.

L'uso non target="_new"è tecnicamente valido secondo le specifiche, ma per quanto ne so ogni browser si comporterà allo stesso modo:

  • cercherà una scheda o una finestra con il nome di contesto "_new"
  • se viene trovata una scheda / finestra "_new", l'URL viene caricato in essa
  • se non viene trovato, viene creata una nuova scheda / finestra con il nome di contesto "_new" e l'URL caricato in esso

Nota target="_new"si comporterà esattamente come target="new", e quest'ultimo è HTML valido mentre il primo è HTML non valido.

Aggiungendo un po 'di confusione a questo, in HTML4 l' targetattributo è stato deprecato. In HTML5 questa decisione è stata annullata ed è di nuovo una parte ufficiale delle specifiche. Tutti i browser supportano targetindipendentemente dalla versione di HTML in uso, ma alcuni validatori contrassegneranno l'utilizzo come obsoleto se il tuo tipo di documento è HTML4.


4
Quindi, fondamentalmente, se ho due (o più) collegamenti con target="_new", entrambi si apriranno nella stessa scheda, uno sovrascrivendo l'altro?
art-solopov,

4
@ art-solopov per quanto ne so, sì, è quello che accadrà in ogni browser. Tuttavia "_new" è un valore illegale per un obiettivo, quindi non farlo.
Abhi Beckert,

25

TL; DR
USE _blank

L'attributo target specifica dove aprire il documento collegato.

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

Siccome "_new" non è uno di questi, CI SARÀ SOTTO "Nome frammento", quindi se un utente fa nuovamente clic su quel collegamento ipertestuale, non aprirà una nuova scheda, ma aggiornerà la scheda esistente. Mentre in _blank se l'utente fa clic due volte, si aprono 2 nuove schede.


21

So che questa è una vecchia domanda e la risposta corretta, l'uso _blank, è stata menzionata più volte, ma l'utilizzo <a target="somesite.com" target="_blank">Link</a> è un rischio per la sicurezza .

Si consiglia ( vantaggi prestazionali ) di utilizzare:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>

1
Solo qualche lettura aggiuntiva sull'aspetto del rischio per la sicurezza: jitbit.com/alexblog/…
8bithero,

14

Questo potrebbe essere stato chiesto prima ma:

"ogni collegamento che specifica target =" _ new "cerca e trova quella finestra per nome e si apre in essa.

Se usi target = "_ blank", ogni volta verrà creata una nuova finestra, sopra la finestra corrente. "

da qui: http://thedesignspace.net/MT2archives/000316.html


12

target="_blank" apre una nuova scheda nella maggior parte dei browser.


12

è la mia comprensione che target = whatevercercherà una cornice / finestra con quel nome. Se non trovato, si aprirà una nuova finestra con quel nome. Se whatever == "_new", apparirà come se lo avessi usato _blanktranne .....

L'uso di uno dei nomi di destinazione riservati ignorerà la fase di "ricerca". Quindi, target = "_blank"su una dozzina di collegamenti si aprirà una dozzina di finestre vuote, ma target = whateversu una dozzina di collegamenti si aprirà solo una finestra. target = "_new"su una dozzina di collegamenti può dare un comportamento incostante. Non l'ho provato su diversi browser, ma dovrei aprire solo una finestra.

Almeno questo è il modo in cui interpreto le regole.


9

Attenzione: ricorda di includere sempre le "virgolette" - almeno su Chrome, target=_blank(senza virgolette) NON È LO STESSO come target="_blank"(con virgolette).

Quest'ultimo apre ogni collegamento in una nuova scheda / finestra. Il primo (virgolette mancanti) apre il primo link su cui fai clic in una nuova scheda / finestra, quindi sovrascrive la stessa scheda / finestra con ogni collegamento successivo su cui fai clic (che viene chiamato anche con le virgolette mancanti).


Ottimo punto Ho riscontrato questo problema quando non ho racchiuso tra virgolette _blank. Il collegamento su cui ho fatto clic dalla mia scheda "vuota" appena creata riguardava la scrittura di contenuti all'interno di quella scheda anziché l'apertura di una nuova scheda. Racchiudere il _blank tra virgolette costringe Chrome ad aprire una nuova scheda ogni volta.
Steve Scherer,

Inoltre, assicurati di utilizzare "_blank" non "_BLANK". Chrome è in realtà esigente riguardo al caso e non aprirà una nuova scheda usando "_BLANK" più volte.
Steve Scherer,

5
  • _blank come valore target genererà una nuova finestra ogni volta,
  • _new genererà solo una nuova finestra.

Inoltre, ogni collegamento su cui è stato fatto clic con un valore target di _new sostituirà la pagina caricata nella finestra generata in precedenza.

Puoi fare clic qui Quando usare _blank o _new per provarlo tu stesso.


Puoi elencare quali browser onorano _newcome descritto?
Dima Tisnek,

@qarma Quel comportamento è come descritto in tutti i browser che conosco, _newnon è una parola chiave magica, è solo un nome, se esiste una finestra con quel nome la riutilizzerà, altrimenti la aprirà. Facendo clic su più collegamenti per quella finestra si apriranno solo pagine diverse nella finestra denominata, anziché aprire più nuove pagine.
scragar

Le specifiche in realtà suggeriscono ai browser di scegliere come ignoretarget che inizia con sottolineato ma non sono parole chiave. Non ci sono suggerimenti su cosa dovrebbe fare un browser quando "ignora" un nome di destinazione non valido. Le possibilità includono: (1) trattalo come "_blank" (2) trattalo come un nome di finestra (come se non ci fosse un carattere di sottolineatura illegale) (3) trattalo come un nome di finestra esplicitamente vuoto (4) trattalo come lì non era un attributo target. - Qualsiasi browser può scegliere una qualsiasi delle interpretazioni.
Jesse Chisholm,

0

L'attributo target di un collegamento forza il browser ad aprire la pagina di destinazione in una nuova finestra del browser. L'uso _blankcome valore di destinazione genererà una nuova finestra ogni volta mentre l'utilizzo _newgenererà solo una nuova finestra e ogni collegamento su cui si fa clic con un valore target _newsostituirà la pagina caricata nella finestra precedentemente generata


0

Per aprire un collegamento in una nuova scheda / finestra utilizzerai <a target="_blank"> .

valore _blank = contesto di navigazione mirato: uno nuovo: scheda o finestra a seconda delle impostazioni di navigazione

valore _new = non valido; nessun valore simile in HTML5 per l'attributo target su un elemento

attributo target con tutti i suoi valori su un elemento: video dimostrativo


-1

L'uso di _New è utile quando si lavora su pagine Iframed. Poiché target = "_ blank" non fa il trucco e apre la pagina sullo stesso iframe ... target new è la soluzione migliore per le pagine Iframe. Solo i miei cinque centesimi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.