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

512

Was ist der Unterschied zwischen <a target="_new">und <a target="_blank">und was soll ich verwenden, wenn ich nur einen Link in einem neuen Tab / Fenster öffnen möchte?

Alex Grin
quelle
73
Zusammenfassung der aktuellen Antworten: _newhat keine besondere Bedeutung. Du könntest auch schreiben _white_little_lamb.
Álvaro González
10
@ x3ro Wie macht es das falsch zu sagen, dass " _new" keine besondere Bedeutung hat?
Álvaro González
3
@ ÁlvaroG.Vicario Ich bezog mich auf "Sie könnten schreiben ... stattdessen". Aber wenn ich darüber nachdenke, würde ich argumentieren, dass "keine besondere Bedeutung hat" nicht dasselbe ist wie "wird ausdrücklich entmutigt", aber das könnte ich nicht picken;)
fresskoma
5
Ich möchte alle daran erinnern, dass die Verwendung target="_blank"ohne rel="noopener"eine potenzielle Sicherheitslücke darstellt. Suchen Sie nach rel="noopener", um mehr zu erfahren.
Flimm

Antworten:

651

Verwenden Sie "_blank"

Gemäß der HTML5-Spezifikation :

Ein gültiger Browserkontextname ist eine Zeichenfolge mit mindestens einem Zeichen, die nicht mit einem U + 005F LOW LINE-Zeichen beginnt. (Namen, die mit einem Unterstrich beginnen, sind für spezielle Schlüsselwörter reserviert.)

Ein gültiger Browserkontextname oder ein gültiges Schlüsselwort ist eine Zeichenfolge, bei der es sich entweder um einen gültigen Browserkontextnamen handelt oder bei der die Übereinstimmung zwischen Groß- und Kleinschreibung nicht berücksichtigt wird: _blank, _self, _parent oder _top. "- Quelle

Das bedeutet, dass es kein solches Schlüsselwort wie _newin HTML5 und auch nicht in HTML4 (und folglich in XHTML) gibt . Das bedeutet, dass es überhaupt kein konsistentes Verhalten gibt, wenn Sie dies als Wert für das Zielattribut verwenden.

Sicherheitsempfehlung

Wie Daniel und Michael in den Kommentaren hervorgehoben haben, sollten Sie bei der Verwendung eines Ziels, _blankdas auf eine nicht vertrauenswürdige Website verweist, zusätzlich festlegen rel="noopener". Dies verhindert, dass die öffnende Site über JavaScript mit dem Opener in Konflikt gerät. Weitere Informationen finden Sie in diesem Beitrag .

Fresskoma
quelle
7
Wenn Sie den fettgedruckten Text aus der Spezifikation weglassen, klingt dieses Zitat verwirrend kreisförmig. Ich las es als "A valid browsing context nameoder Schlüsselwort ist eine beliebige Zeichenfolge, die entweder ein valid browsing context nameoder ... ist"
Alex Grin
6
@lyoshenka, @ x3ro: Ich habe mir erlaubt, den vorherigen Absatz zum Zitat hinzuzufügen. Das sollte die Verwirrung beseitigen.
Mercator
5
@aesede: Lesen Sie die Spezifikation. Sie sind nicht gültig, weil „my_custom_name“ kann nicht mit einem Unterstrich vorangestellt werden. Also "neu" wäre in Ordnung, aber "_new" nicht!
Fresskoma
7
Sicherheitstechnisch ist dies eine wichtige Lektüre mathiasbynens.github.io/rel-noopener
Daniel F
6
Bitte erwägen Sie hinzuzufügen, dass Personen rel="noopener noreferrer"aufgrund der Javascript-Angriffsanfälligkeit vontarget="_blank"
Michael
126

Mit target="_blank"wird der Browser angewiesen, eine neue Browserregisterkarte oder ein neues Browserfenster zu erstellen, wenn der Benutzer auf den Link klickt.

Die Verwendung target="_new"ist gemäß den Spezifikationen technisch ungültig, aber soweit ich weiß, verhält sich jeder Browser gleich:

  • Es wird nach einer Registerkarte oder einem Fenster mit dem Kontextnamen "_new" gesucht.
  • Wenn ein "_new" Tab / Fenster gefunden wird, wird die URL darin geladen
  • Wird es nicht gefunden, wird eine neue Registerkarte / ein neues Fenster mit dem Kontextnamen "_new" erstellt und die URL darin geladen

Hinweis target="_new"verhält sich genauso wie target="new"und letzteres ist gültiges HTML, während ersteres ungültiges HTML ist.

In HTML4 war das targetAttribut veraltet. In HTML5 wurde diese Entscheidung rückgängig gemacht und ist wieder ein offizieller Teil der Spezifikation. Alle Browser unterstützen targetunabhängig davon, welche HTML-Version Sie verwenden. Einige Validatoren kennzeichnen die Verwendung jedoch als veraltet, wenn Ihr Doctype HTML4 ist.

Abhi Beckert
quelle
4
Wenn ich also zwei (oder mehr) Links habe target="_new", werden beide in derselben Registerkarte geöffnet, wobei einer den anderen überschreibt.
Art-Solopov
4
@ art-solopov soweit ich weiß, ja das wird in jedem browser passieren. "_New" ist jedoch ein unzulässiger Wert für ein Ziel. Tun Sie es also nicht.
Abhi Beckert
25

TL; DR
USE _blank

Das Zielattribut gibt an, wo das verknüpfte Dokument geöffnet werden soll.

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

DA "_new" keines dieser Elemente ist, wird es unter "Framename" angezeigt. Wenn ein Benutzer erneut auf diesen Hyperlink klickt, wird kein neuer Tab geöffnet, sondern der vorhandene Tab aktualisiert. Wenn in _blank der Benutzer zweimal klickt, werden 2 neue Registerkarten geöffnet.

abe312
quelle
21

Ich weiß, dass dies eine alte Frage ist und die richtige Antwort, Verwendung _blank, mehrfach erwähnt wurde, aber die Verwendung <a target="somesite.com" target="_blank">Link</a> ist ein Sicherheitsrisiko .

Es wird empfohlen ( Leistungsvorteile ), Folgendes zu verwenden:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>
Michal Frystacky
quelle
1
Nur eine zusätzliche Lektüre zum Sicherheitsrisiko: jitbit.com/alexblog/…
8bithero
14

Dies wurde vielleicht schon einmal gefragt, aber:

"Jeder Link, der target =" _ new "angibt, sucht und findet dieses Fenster nach Namen und öffnet sich darin.

Wenn Sie target = "_ blank" verwenden, wird jedes Mal ein brandneues Fenster über dem aktuellen Fenster erstellt. "

von hier: http://thedesignspace.net/MT2archives/000316.html

korrodiert
quelle
12

target="_blank" öffnet in den meisten Browsern einen neuen Tab.

Abudayah
quelle
12

Nach meinem Verständnis target = whateverwird nach einem Rahmen / Fenster mit diesem Namen gesucht. Wird es nicht gefunden, wird ein neues Fenster mit diesem Namen geöffnet. Wenn whatever == "_new", wird es so aussehen, als ob Sie es verwendet haben_blank außer .....

Die Verwendung eines der reservierten Zielnamen umgeht die "Suchphase". Bei target = "_blank"einem Dutzend Links werden also ein Dutzend leere Fenster geöffnet, target = whateverbei einem Dutzend Links jedoch nur ein Fenster. target = "_new"Bei einem Dutzend Links kann es zu unbeständigem Verhalten kommen. Ich habe es nicht in mehreren Browsern versucht, sollte aber nur ein Fenster öffnen.

Zumindest interpretiere ich die Regeln so.

der Hampster
quelle
9

Achtung - denken Sie daran, immer die "Anführungszeichen" anzugeben - zumindest in Chrome target=_blank(keine Anführungszeichen) ist NICHT DAS GLEICHE wie target="_blank"(mit Anführungszeichen).

Letzteres öffnet jeden Link in einem neuen Tab / Fenster. Ersteres (fehlende Anführungszeichen) öffnet den ersten Link, auf den Sie in einem neuen Tab / Fenster klicken, und überschreibt dann denselben Tab / Fenster bei jedem nachfolgenden Link, auf den Sie klicken (der auch mit den fehlenden Anführungszeichen benannt ist).

cnd
quelle
Sehr guter Punkt. Ich bin auf dieses Problem gestoßen, als ich das Leerzeichen nicht in Anführungszeichen gesetzt habe. Der Link, auf den ich auf meiner neu erstellten "leeren" Registerkarte geklickt habe, überschrieb das Schreiben von Inhalten auf dieser Registerkarte, anstatt eine neue Registerkarte zu öffnen. Wenn Sie das Leerzeichen in Anführungszeichen setzen, wird Chrome gezwungen, jedes Mal einen neuen Tab zu öffnen.
Steve Scherer
Stellen Sie außerdem sicher, dass Sie "_blank" und nicht "_BLANK" verwenden. Chrome ist eigentlich sehr pingelig und öffnet keinen neuen Tab mit "_BLANK" mehrmals.
Steve Scherer
5
  • _blank als Zielwert erzeugt jedes Mal ein neues Fenster.
  • _new erzeugt nur ein neues Fenster.

Außerdem ersetzt jeder Link, auf den mit dem Zielwert _new geklickt wird, die im zuvor erstellten Fenster geladene Seite.

Sie können hier klicken, wann Sie _blank oder _new verwenden müssen , um es selbst auszuprobieren.

James Drinkard
quelle
Können Sie auflisten, welche Browser _newwie beschrieben ehren ?
Dima Tisnek
@qarma Dieses Verhalten ist wie in allen mir bekannten Browsern beschrieben, _newkein magisches Schlüsselwort, sondern nur ein Name. Wenn ein Fenster mit diesem Namen vorhanden ist, wird es wiederverwendet, andernfalls wird es geöffnet. Wenn Sie auf mehrere Links für dieses Fenster klicken, werden nur verschiedene Seiten im benannten Fenster geöffnet, anstatt mehrere neue Seiten zu öffnen.
Scragar
Die Spezifikation schlägt Browsern tatsächlich vor, dass sie ignoreZiele haben, die mit Unterstreichung beginnen, aber keine Schlüsselwörter sind. Es gibt keine Vorschläge, was ein Browser tun soll, wenn er einen ungültigen Zielnamen "ignoriert". Zu den Möglichkeiten gehören: (1) Behandle es wie "_blank". (2) Behandle es wie einen Fensternamen (als ob es keinen illegalen Unterstrich gäbe). (3) Behandle es wie einen explizit leeren Fensternamen. (4) Behandle es wie dort war kein Zielattribut. - Jeder Browser kann eine der Interpretationen auswählen.
Jesse Chisholm
0

Das Zielattribut eines Links zwingt den Browser, die Zielseite in einem neuen Browserfenster zu öffnen. Die Verwendung _blankals Zielwert erzeugt jedes Mal ein neues Fenster, während die Verwendung _newnur ein neues Fenster erzeugt, und jeder Link, auf den mit einem Zielwert von geklickt _newwird, ersetzt die Seite, die in das zuvor erzeugte Fenster geladen wurde

Carlos Guzman
quelle
0

Um einen Link in einem neuen Tab / Fenster zu öffnen, verwenden Sie <a target="_blank">.

value _blank= gezielter Browserkontext: ein neuer: Tab oder Fenster, abhängig von Ihren Browsing-Einstellungen

Wert _new= ungültig; Kein solcher Wert in HTML5 für das Zielattribut eines Elements

Zielattribut mit all seinen Werten für ein Element: Videodemo

Daniel
quelle
-1

Die Verwendung von _New ist nützlich, wenn Sie an Seiten arbeiten, die gerahmt sind. Da target = "_ blank" nicht ausreicht und die Seite auf demselben Iframe öffnet ... ist target new die beste Lösung für Iframe-Seiten. Nur meine fünf Cent.

Ozzy Gonzalez
quelle