Ist es in Ordnung, target = "_ blank" in HTML5 zu verwenden?


165

Ich erinnere mich, dass ich irgendwo gelesen habe, dass es in HTML5 nicht mehr in Ordnung war, es target="_blank"in HTML5 zu verwenden, aber ich kann es jetzt nicht finden.

Ist es in Ordnung, weiter zu verwenden target="_blank"?

Ich weiß, dass dies im Allgemeinen als schlechte Idee angesehen wird, aber es ist der einfachste Weg, ein neues Fenster für so etwas wie ein PDF zu öffnen, und Sie müssen sich auch nicht auf JavaScript verlassen.


5
Wenn Sie eine externe Site von Ihrer Site aus öffnen möchten, ist es meiner Meinung nach besser, ein neues Fenster zu öffnen (was heutzutage bei den meisten Browsern wahrscheinlich ein neuer Tab ist).
hobbes3

7
@ hobbes3, bitte hör auf, meine Navigation und meine Geschichte durcheinander zu bringen. Ich bin derjenige, der surft, und ich bin es, der entscheidet, ob ein Link in einem neuen (mittlerer Klick) oder in demselben (linker Klick) Tab geöffnet werden soll. Wenn ich auf eine Website stoße, die mich zwingt, die "rechtmäßige Best Practice" zu befolgen und jeden Link in neuen Registerkarten zu öffnen, gehe ich sofort und gerne.
Albireo

9
@Albireo, es ist nur meine Meinung und einige beliebte Webdienste enthalten die gleiche Idee. Wenn Sie beispielsweise in Google Mail auf einen Link in Ihrer E-Mail klicken, wird standardmäßig ein neues Fenster geöffnet.
hobbes3

12
@Albireo Sie gehen davon aus, dass der Benutzer immer so fortschrittlich und technisch versiert ist wie Sie.
Mike Campbell

3
Es gibt einen Grund, warum targetet al. existieren. Manchmal sind sie eine Notwendigkeit. Eine dynamisch generierte Seite mit Stateful JS, bei der beispielsweise ein Iframe weniger wünschenswert ist als eine neue Registerkarte (z. B. Anzeigen einer PDF-Datei, wie im OP angegeben). Oder wenn eine sichere Site (z. B. eine Bank) Sie an einen externen Link sendet, die Verwendung der Schaltfläche "Zurück" jedoch aufgrund des Ablaufs des Inhalts nicht zulässt. Wie alle Dinge ist dieses HTML-Attribut keine "schlechte Idee", aber es sollte mit Bedacht und Sorgfalt verwendet werden, wie bei jeder Bibliothek, Klasse, Funktion und Eigenschaft in der gesamten Programmierung.
am

Antworten:


159

Es sieht so aus, als wäre target="_blank"es noch in Ordnung. Es wird im neuesten HTML5-Entwurf als Schlüsselwort für den Browserkontext aufgeführt .


54
target="_blank"Jedes Mal, wenn der Benutzer auf den Link klickt, wird ein neues Fenster geöffnet . Es sei denn, dies ist wirklich das, was Sie möchten (und dies ist selten der Fall). Ziehen Sie die Verwendung in Betracht, target="somethingUnique"damit der Benutzer nur ein Fenster öffnet, selbst wenn er mehrmals auf den Link klickt. Es macht für eine viel schönere UX.
BanksySan

4
@ BanksySan: Ein Beispiel, bei dem ich das target="_blank"für gut halte, ist das Teilen von Schaltflächen.
Martin Thoma

Wenn ich einen langen Artikel lese und auf eine verwandte Site (oder dieselbe Site) verweist. Ich möchte oft zwischen den beiden hin und her springen, ohne meinen Platz im Originalartikel zu verlieren. target = "_ blank" ist dafür perfekt. Das Verlassen der Seite und das abwechselnde Neuladen jeder Seite (oft verliert ich meinen Platz auf beiden Seiten) ist dies nicht. Ja, ich weiß, dass ich mit der rechten Maustaste auf den Link klicken und ihn in einem neuen Tab öffnen kann, aber ich möchte nicht, weil dies meine Konzentration beeinträchtigt, und ich vermute, dass die Mehrheit der Webbenutzer nicht weiß, wie.
Bob Ray

Das Zielattribut hat viele Vorteile. Ich werde das nicht ablehnen. Die Popup-Werbetreibenden haben ihren Zweck zerstört, aber heute, da so viele Dienste neben dem Surferlebnis ausgeführt werden, möchten viele Menschen den aktuellen Artikel oder Tab nicht verlassen, sondern dennoch mit dem umfangreichen PDF- oder Video-Download interagieren. Stellen Sie mit _blank sicher, dass der Benutzer eine leere Registerkarte ausfüllt - überschreiben Sie nicht den aktuellen Inhalt, wenn Sie viele Links auf derselben Sitzung / Site bereitstellen. Einzigartige Namen sind in einer Audio-Liste mit 90 Songs nur chaotisch ... Viva la target, viva la _blank ...
Jonas Lundman

91

Es ist in Ordnung zu benutzen target="_blank"; Dies wurde in XHTML beseitigt, da durch das Targeting neuer Fenster in den meisten Browsern immer die Popup-Warnung angezeigt wird. XHTML zeigt bei einer Validierung immer einen Fehler mit dem Zielattribut an.

HTML 5 brachte es zurück, weil wir es immer noch verwenden. Es ist unser Freund und wir können nicht loslassen.

Lass niemals los.


Was Sie behaupten, gilt nur für striktes HTML.
QWERZMAN

Für XHTML sowie für HTML.
MEMark

15

Obwohl das target="_blank"ist akzeptabel in HTML5 , versuche ich persönlich nie , es zu benutzen (auch für PDFs in einem neuen Fenster zu öffnen).

HTML sollte Bedeutung und Inhalt definieren . Fragen Sie sich: "Würde sich die Bedeutung des aElements ändern, wenn das targetAttribut entfernt würde?" Wenn nicht, sollte der Code nicht in den HTML-Code aufgenommen werden. (Eigentlich bin ich überrascht, dass das W3C es behalten hat ... ich denke, sie können wirklich einfach nicht loslassen.)

Browser Verhalten , insbesondere interaktives Verhalten mit dem Benutzer , sollte mit clientseitigen Skriptsprachen wie JavaScript implementiert werden. Da sich der Browser auf eine bestimmte Weise verhalten soll, dh ein neues Fenster öffnen soll, sollten Sie JS verwenden. Wie Sie bereits erwähnt haben, muss sich der Browser für dieses Verhalten auf JS verlassen. (Wenn sich Ihre Site jedoch ordnungsgemäß verschlechtert oder schrittweise verbessert oder was auch immer , sollte dies dennoch in Ordnung sein. Die Benutzer mit deaktiviertem JS werden nicht viel verpassen.)

Davon abgesehen ist keines davon die richtige Antwort. Irgendwo da draußen ist die Meinung, dass das Öffnen eines Links letztendlich vom Endbenutzer entschieden werden sollte . Nehmen Sie dieses Beispiel.

Sie surfen in Wikipedia und tauchen immer tiefer in ein Kaninchenloch ein. Sie stoßen beim Lesen auf einen Link.

Angenommen, Sie möchten die verlinkte Seite ganz schnell überfliegen, bevor Sie zurückkehren. Sie können es in einem neuen Tab öffnen und dann schließen, wenn Sie fertig sind (da das Drücken der Schaltfläche "Zurück" und das Warten auf das erneute Laden der Seite zu lange dauert). Oder was ist, wenn es interessant aussieht und Sie es für später speichern möchten? Vielleicht sollten Sie es stattdessen in einer neuen Hintergrundregisterkarte öffnen und die aktuelle Seite weiterlesen. Oder Sie entscheiden, dass Sie mit dem Lesen dieser Seite fertig sind, und folgen einfach dem Link auf der aktuellen Registerkarte.

Der Punkt ist, Sie haben Ihren eigenen Workflow und möchten, dass sich Ihr Browser entsprechend verhält. Sie könnten ziemlich frustriert sein, wenn es diese Art von Entscheidungen für Sie trifft.

Davon abgesehen sollten Webentwickler absolut klarstellen, wohin ihre Links führen, auf welche Arten und / oder Formate von Quellen sie verweisen und was sie tun. Tooltips können Ihre Freunde sein (es sei denn, Sie verwenden ein Tablet oder ein Telefon; geben Sie diese in diesem Fall auf der mobilen Website an). Wir alle wissen, wie scheiße es ist, an einen Ort gebracht zu werden, den wir nicht erwartet hatten, oder etwas zu bewirken, was wir nicht wollten.


Und wenn jemand klug genug war, ein Benutzer-Widget zu entwerfen, mit dem man sein gottgegebenes Kontrollrecht mit jedem Link sehr einfach ausüben kann (einfach, wie unbewusst), sollte es Browsern hinzugefügt werden und alle <a> -Tags könnten stelle es zur Verfügung.
Mark Goldfain

Diese Antwort ist meiner Meinung nach logisch und architektonisch die genaueste. In einer idealen Welt sollten sich Autoren mehr um die ordnungsgemäße semantische Identifizierung von Chunks und weniger um die Vorbestimmung des Verhaltens der Chunks kümmern. In dem aufkommenden Universum für adaptive Inhalte kann das Fensterverhalten davon abhängen, welches reaktionsschnelle Thema oder welche Benutzerpräferenz zum Zeitpunkt der Anforderung wirksam ist. Das ausgehende semantische "Ding" wird nur bei Bedarf durch Transformation (DOM oder Regex, Server oder Browser) geändert. Auf diese Weise kann das Fensterverhalten eher dem Benutzer als einem Autor in einem CMS überlassen bleiben.
Don Day

12

Es ist der einfachste Weg, ein neues Fenster für so etwas wie ein PDF zu öffnen

Dies ist auch der einfachste Weg, um Nicht-Windows-Benutzer zu ärgern. PDF-Dateien lassen sich problemlos in Browsern auf anderen Plattformen öffnen. Das Öffnen eines neuen Fensters bringt auch den Navigationsverlauf durcheinander und erschwert die Arbeit auf kleineren Plattformen wie Smartphones.

Öffnen Sie KEINE neuen Fenster für Dinge wie PDF, nur weil ältere Windows-Versionen defekt waren.


11
Wissen Sie, was hilft, wenn Sie den Leuten sagen, dass sie etwas nicht benutzen sollen? Das HTML5-Download-Attribut zeigt ihnen, was zu verwenden ist: <a download="[Dateiname hier weiblich" href="file.ext"> usw. </a> .
John

5

Die meisten Webentwickler verwenden target="_blank"nur zum Öffnen von Links in neuen Registerkarten. Wenn Sie target="_blank"nur Links in einem neuen Tab öffnen, ist dieser für einen Angreifer anfällig. Wenn Sie einen Link in einer neuen Registerkarte öffnen ( target="_blank"), kann die Seite, die in einer neuen Registerkarte geöffnet wird, auf die ursprüngliche Registerkarte zugreifen und deren Position mithilfe der window.openerEigenschaft ändern .

Javascript-Code:

window.opener.location.replace(malicious URL)

Verhütung:

rel="nofollow noopener noreferrer"

Ich bin mir nicht sicher, ob Nofollow mit Sicherheit zusammenhängt - es ist für Suchmaschinen-Bots.
Darryl Hein

4

Während das Ziel in HTML5 noch akzeptabel ist, wird es nicht bevorzugt. Verwenden Sie zum Verknüpfen mit einer PDF-Datei das Download- Attribut anstelle des Zielattributs.

Hier ist ein Beispiel:

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

Wenn der ursprüngliche Dateiname für die eindeutige Speicherung von Dateien codiert ist, können Sie einen benutzerfreundlichen Downloadnamen angeben, indem Sie dem Downloadattribut einen Wert zuweisen:

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

Beachten Sie, dass die meisten modernen Browser diese Funktion zwar unterstützen, einige jedoch möglicherweise nicht. Weitere Informationen finden Sie unter caniuse.com .



0

Mit jquery können Sie dies folgendermaßen tun. Dadurch wird es in einem neuen Fenster geöffnet:

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

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

</script>

Fügen Sie ein Formular um die Schaltfläche mit target = "_ blank" hinzu. Das scheint einfacher zu sein und die Notwendigkeit für JS zu beseitigen.
Darryl Hein

-1

Ich denke, das Zielattribut ist für das <link>Element veraltet , nicht <a>, wahrscheinlich haben Sie deshalb gehört, dass es nicht mehr verwendet werden soll.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.