Ich erinnere mich, irgendwo gelesen zu haben, dass es in HTML5 nicht mehr in Ordnung war, es zu verwenden target="_blank"
in HTML5, aber ich kann es jetzt nicht finden.
Ist es in Ordnung, weiter zu verwenden target="_blank"
?
Ich weiß, dass es im Allgemeinen als schlechte Idee angesehen wird, aber es ist der einfachste Weg, ein neues Fenster für etwas wie ein PDF zu öffnen, und Sie müssen sich auch nicht auf JavaScript verlassen.
Es sieht aus wie target="_blank"
ist noch in Ordnung. Es wird als Schlüsselwort für den Browsing-Kontext in aufgeführt der neueste HTML5-Entwurf.
Es ist in Ordnung zu verwenden target="_blank"
; Dies wurde in XHTML abgeschafft, da das Targeting neuer Fenster in den meisten Browsern immer die Popup-Warnung hervorruft. 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.
Obwohl die target="_blank"
ist akzeptabel in HTML5ich persönlich versuche, es nie zu verwenden (auch nicht zum Öffnen von PDFs in einem neuen Fenster).
HTML sollte definieren Sinn und Inhalt. Frag dich selbst, „Würden die Bedeutung des a
Element ändern, wenn die target
Attribute wurden entfernt?“ Wenn nicht, sollte der Code nicht in den HTML-Code eingefügt werden. (Eigentlich bin ich überrascht, dass das W3C es behalten hat … Ich schätze, sie können einfach nicht loslassen.)
Browser Verhaltenspeziell, Interaktionsverhalten mit dem Benutzer, sollte mit clientseitigen Skriptsprachen wie JavaScript implementiert werden. Da Sie möchten, dass sich der Browser auf eine bestimmte Weise verhält, dh ein neues Fenster öffnet, sollten Sie JS verwenden. Aber wie Sie bereits erwähnt haben, erfordert dieses Verhalten, dass sich der Browser auf JS verlässt. (Obwohl Ihre Website elegant heruntergestuft oder progressiv verbessert wird, oder Wasauchimmer, dann sollte es noch gehen. Die Benutzer mit deaktiviertem JS werden nicht viel verpassen.)
Davon abgesehen, keines davon ist die richtige Antwort. Irgendwo da draußen ist die Meinung, dass Wie sich ein Link öffnet, sollte letztlich der Endnutzer entscheiden. Nehmen Sie dieses Beispiel.
Du surfst auf Wikipedia und gerätst immer tiefer in ein Kaninchenloch. 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 es dann schließen, wenn Sie fertig sind (weil das Drücken der Schaltfläche „Zurück“ und das Warten auf das Neuladen 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 einem neuen Hintergrund-Tab öffnen und die aktuelle Seite weiterlesen. Oder vielleicht beschließen Sie, dass Sie mit dem Lesen dieser Seite fertig sind, und folgen einfach dem Link im aktuellen Tab.
Der Punkt ist, dass Sie Ihren eigenen Workflow haben 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 treffen würde.
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. QuickInfos können Ihr Freund sein (es sei denn, Sie verwenden ein Tablet oder Telefon; in diesem Fall geben Sie diese auf der mobilen Website an). Wir alle wissen, wie ätzend es ist, irgendwohin gebracht zu werden, wo wir es nicht erwartet haben, oder etwas geschehen zu lassen, das wir nicht beabsichtigt hatten.
Obwohl das Ziel in HTML5 noch akzeptabel ist, wird es nicht bevorzugt. Um auf eine PDF-Datei zu verlinken, verwenden Sie die Download -Attribut anstelle des Zielattributs.
Hier ist ein Beispiel:
<a href="https://stackoverflow.com/questions/4198788/files/invoice.pdf" download>Invoice</a>
Wenn der ursprüngliche Dateiname für eine eindeutige Dateispeicherung codiert ist, können Sie einen benutzerfreundlichen Download-Namen angeben, indem Sie dem Download-Attribut einen Wert zuweisen:
<a href="https://stackoverflow.com/questions/4198788/files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>
Denken Sie daran, dass die meisten modernen Browser diese Funktion zwar unterstützen, einige jedoch möglicherweise nicht. Sehen caniuse.com Für mehr Information.
Wenn Sie eine externe Website von Ihrer Website aus öffnen möchten, ist es meiner Meinung nach im Allgemeinen eine bessere Idee, ein neues Fenster zu öffnen (was heutzutage in den meisten Browsern wahrscheinlich eine neue Registerkarte ist).
– Hobbes3
10. Mai 2012 um 7:39 Uhr
@hobbes3, bitte hör auf, meine Navigation und meinen Verlauf durcheinander zu bringen. Ich bin derjenige, der surft, und ich entscheide, ob ein Link in einem neuen (mittlerer Mausklick) oder im selben (linker Mausklick) Tab geöffnet werden soll. Wenn ich auf eine Website stoße, die mich zwingt, ihrer „rechtmäßigen Best Practice“ zu folgen, die jeden Link in neuen Registerkarten öffnet, verlasse ich sie sofort und gerne.
– Albireo
24. Januar 2013 um 7:23 Uhr
@Albireo, es ist nur meine Meinung und einige beliebte Webdienste beinhalten auch 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
2. Februar 2013 um 21:47 Uhr
@Albireo Sie gehen davon aus, dass der Benutzer immer so fortgeschritten und technisch versiert ist wie Sie.
– Mike Campbell
31. Januar 2014 um 14:13 Uhr
Es gibt einen Grund dafür
target
et al. existieren. Manchmal sind sie eine Notwendigkeit. Eine dynamisch generierte Seite mit Stateful JS, zum Beispiel, wo ein Iframe weniger wünschenswert ist als ein neuer Tab (zB Anzeigen einer PDF, wie das OP angibt). Oder wenn eine sichere Website (z. B. eine Bank) Sie zu einem externen Link weiterleitet, aber die Verwendung der Zurück-Schaltfläche aufgrund des Ablaufs von Inhalten nicht zulässt. Wie alle Dinge ist auch 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.– s.co.tt
19. Dezember 2014 um 17:10 Uhr