Va bene usare target = "_ blank" in HTML5?


165

Ricordo di aver letto da qualche parte che in HTML5 non era più corretto usare target="_blank"in HTML5, ma non riesco a trovarlo ora.

Va bene continuare a usare target="_blank"?

So che è generalmente considerata una cattiva idea, ma è il modo più semplice per aprire una nuova finestra per qualcosa di simile a un PDF e inoltre non richiede di fare affidamento su JavaScript.


5
Bene, in generale, se vuoi aprire un sito esterno dal tuo sito, aprire una nuova finestra (che probabilmente è una nuova scheda nella maggior parte dei browser di questi tempi) è un'idea migliore secondo me.
hobbes3,

7
@ hobbes3, per favore, smetti di rovinare la mia navigazione e la mia cronologia. Sono quello che sta navigando, e sono io che sto decidendo se aprire un collegamento in una nuova scheda (clic centrale) o nella stessa scheda (clic sinistro). Quando mi imbatto in un sito web che mi costringe a seguire la sua "best practice" legittima aprendo ogni link in nuove schede, lascerò prontamente e volentieri.
Albireo,

9
@Albireo, è solo la mia opinione e alcuni servizi web popolari incorporano anche la stessa idea. Ad esempio, facendo clic su un collegamento nella tua posta in Gmail si apre una nuova finestra per impostazione predefinita.
hobbes3,

12
@Albireo stai supponendo che l'utente sia sempre avanzato e esperto di tecnologia come te.
Mike Campbell,

3
C'è un motivo per cui targetet al. esistere. A volte sono una necessità. Una pagina generata dinamicamente con JS con stato, ad esempio, in cui un iframe è meno desiderabile di una nuova scheda (ad es. Visualizzazione di un PDF, come afferma l'OP). O quando un sito sicuro (come una banca) ti invia a un collegamento esterno ma non consente l'uso del pulsante Indietro a causa della scadenza del contenuto. Come tutte le cose, questo attributo HTML non è una "cattiva idea" da usare, ma dovrebbe essere usato con cura e attenzione, come con ogni libreria, classe, funzione e proprietà in tutta la programmazione.
s.co.tt

Risposte:


159

Sembra che target="_blank"sia ancora tutto a posto. È elencato come parola chiave del contesto di navigazione nell'ultima bozza HTML5 .


54
target="_blank"farà aprire una nuova finestra ogni volta che l'utente fa clic sul collegamento. A meno che questo non sia realmente ciò che vuoi che accada (e lo è raramente), considera l'utilizzo in target="somethingUnique"modo che l'utente ottenga l'apertura di una sola finestra, anche se fa clic sul collegamento più volte. Rende UX molto più piacevole.
BanksySan,

4
@BanksySan: un esempio in cui penso che target="_blank"sia buono sono i pulsanti di condivisione.
Martin Thoma,

Se sto leggendo un lungo articolo e c'è un riferimento ad alcune informazioni correlate su un altro sito (o sullo stesso sito). Spesso voglio saltare avanti e indietro tra i due senza perdere il mio posto nell'articolo originale. target = "_ blank" è perfetto per questo. Lasciare la pagina e dover ricaricare alternativamente ogni pagina (spesso perdendo il mio posto in entrambe le pagine), non lo è. Sì, so che posso fare clic con il tasto destro del mouse sul link e aprirlo in una nuova scheda, ma non lo voglio perché interromperà la mia concentrazione e sospetto che la maggior parte degli utenti Web non sappia come.
Bob Ray,

L'attributo target ha molti vantaggi. Non lo dirò. Gli inserzionisti popup hanno distrutto il suo scopo, ma oggi con così tanti servizi che mettono da parte l'esperienza di navigazione, molte persone non vogliono lasciare l'articolo o la scheda corrente, ma interagiscono comunque con il pesante download di PDF o video. Utilizzando _blank assicurati di consentire all'utente di popolare una scheda vuota - non sovrascrivere il contenuto di popolamento corrente, se offri molti collegamenti nella stessa sessione / sito. I nomi univoci sono solo disordinati in un elenco audio con 90 brani .... Viva la target, viva la _blank ...
Jonas Lundman,

91

Va bene usare target="_blank"; Ciò è stato eliminato in XHTML perché il targeting di nuove finestre attiverà sempre l'avviso pop-up nella maggior parte dei browser. XHTML mostrerà sempre un errore con l'attributo target in un validato.

HTML 5 lo ha riportato perché lo usiamo ancora. È nostro amico e non possiamo lasciarlo andare.

Mai lasciare andare.


Quello che affermi è valido solo per HTML rigoroso.
qwertzman,

Per XHTML e HTML.
MEM

15

Sebbene target="_blank"sia accettabile in HTML5 , provo personalmente a non usarlo mai (anche per aprire PDF in una nuova finestra).

HTML dovrebbe definire significato e contenuto . Chiedetevi, “sarebbe il senso del acambiamento elemento se l' targetattributo sono stati rimossi?” In caso contrario, il codice non dovrebbe andare nell'HTML. (In realtà sono sorpreso che il W3C l'abbia tenuto ... credo che proprio non riescano a lasciarlo andare.)

Il comportamento del browser , in particolare il comportamento interattivo con l'utente , deve essere implementato con linguaggi di scripting lato client come JavaScript. Dato che vuoi che il browser si comporti in un modo particolare, cioè aprendo una nuova finestra, dovresti usare JS. Ma come hai detto, questo comportamento richiede al browser di fare affidamento su JS. (Anche se il tuo sito si degrada con garbo, o migliora progressivamente, o qualsiasi altra cosa , allora dovrebbe comunque andare bene. Gli utenti con JS disabilitato non mancheranno molto.)

Detto questo, nessuna di queste è la risposta giusta. Esiste da qualche parte l'opinione che il modo in cui un link si apre alla fine dovrebbe essere deciso dall'utente finale . Prendi questo esempio.

Stai navigando su Wikipedia, diventando sempre più profondo in una tana di coniglio. Ti imbatti in un link nella tua lettura.

Diciamo che vuoi sfogliare la pagina collegata molto velocemente prima di tornare indietro. Potresti aprirlo in una nuova scheda, quindi chiuderlo quando hai finito (perché premere il pulsante 'indietro' e attendere il ricaricamento della pagina richiede troppo tempo). Oppure, se sembra interessante e vuoi salvarlo per dopo? Forse dovresti aprirlo in una nuova scheda in background e continuare a leggere la pagina corrente. Oppure, forse decidi di aver finito di leggere questa pagina, quindi seguirai semplicemente il link nella scheda corrente.

Il punto è che hai il tuo flusso di lavoro e desideri che il tuo browser si comporti di conseguenza. Potresti essere piuttosto frustrato se prendesse questo tipo di decisioni per te.

Detto questo, gli sviluppatori web dovrebbero chiarire in modo chiaro dove vanno i loro collegamenti, quali tipi e / o formati di fonti fanno riferimento e cosa fanno. I suggerimenti possono essere tuoi amici (a meno che tu non stia utilizzando un tablet o un telefono; in tal caso, specificali sul sito mobile). Sappiamo tutti quanto fa schifo essere portato da qualche parte che non ci aspettavamo o fare accadere qualcosa che non volevamo.


E se qualcuno fosse abbastanza intelligente da progettare un widget utente che permettesse di esercitare facilmente il proprio diritto di controllo dato da Dio con ogni collegamento (facilmente, come nel subconscio), allora dovrebbe essere aggiunto ai browser e tutti i tag <a> potrebbero forniscilo.
Mark Goldfain,

Questa risposta è logicamente e architettonicamente la più accurata, secondo me. In un mondo ideale, gli autori dovrebbero essere più preoccupati della corretta identificazione semantica dei blocchi, e meno della predeterminazione del comportamento dei blocchi. Nell'universo emergente di contenuto adattivo, i comportamenti delle finestre possono dipendere dal tema sensibile o dalle preferenze dell'utente in atto al momento della richiesta; la "cosa" semantica in uscita viene modificata solo se necessario dalla trasformazione (DOM o regex, server o browser). In questo modo, i comportamenti delle finestre POSSONO spettare all'utente anziché a un autore in un CMS.
Don Day

12

è il modo più semplice per aprire una nuova finestra per qualcosa come un PDF

È anche il modo più semplice per infastidire gli utenti non Windows. Il PDF si apre bene nei browser su altre piattaforme. L'apertura di una nuova finestra confonde anche la cronologia di navigazione e complica la questione su piattaforme più piccole come gli smartphone.

NON aprire nuove finestre per cose come PDF solo perché le versioni precedenti di Windows erano danneggiate.


11
Sai cosa aiuta quando dici alle persone di non usare qualcosa? Mostrando loro ciò che per utilizzare il HTML5 scaricare attributi: <a download="[file nome here]" href="file.ext"> ecc </a> .
Giovanni,

5

La maggior parte degli sviluppatori Web utilizza target="_blank"solo per aprire i collegamenti in una nuova scheda. Se si utilizza target="_blank"solo per aprire collegamenti in una nuova scheda, è vulnerabile a un utente malintenzionato. Quando si apre un collegamento in una nuova scheda ( target="_blank"), la pagina che si apre in una nuova scheda può accedere alla scheda iniziale e modificarne la posizione utilizzando la window.openerproprietà.

Codice Javascript:

window.opener.location.replace(malicious URL)

Prevenzione:

rel="nofollow noopener noreferrer"

Non sono sicuro che nofollow sia legato alla sicurezza - è per i robot dei motori di ricerca.
Darryl Hein,

4

Mentre target è ancora accettabile in HTML5 non è preferito. Per collegarsi a un file PDF utilizzare l' attributo download anziché l'attributo target.

Ecco un esempio:

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

Se il nome del file originale è codificato per l'archiviazione di file univoci, è possibile specificare un nome di download intuitivo assegnando un valore all'attributo download:

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

Tieni presente che mentre la maggior parte dei browser moderni supporta questa funzionalità, alcuni potrebbero non esserlo. Vedi caniuse.com per maggiori informazioni.



0

Puoi farlo nel modo seguente con jquery, questo lo aprirà in una nuova finestra:

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

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

</script>

Perché non aggiungere un modulo attorno al pulsante con target = "_ blank". Sembra che sarebbe più facile e rimuovere la necessità di JS.
Darryl Hein,

-1

Penso che l'attributo target sia deprecato per l' <link>elemento, <a>probabilmente è per questo che hai sentito che non dovrebbe più essere usato.

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.