Textfragmente
Textfragmente verlinken direkt auf bestimmten Text auf einer Webseite, ohne dass der Seitenautor eine ID hinzufügen muss. Sie verwenden eine spezielle Syntax im URL-Fragment. Diese Funktion ermöglicht es Ihnen, Deep Links zu Inhalten zu erstellen, die Sie nicht kontrollieren und die möglicherweise keine IDs haben. Außerdem wird das Teilen von Links nützlicher, indem andere direkt auf bestimmte Wörter verwiesen werden. Browser können unterschiedlich darstellen, wie sie auf den verlinkten Text aufmerksam machen — normalerweise wird der Text in den Blick gescrollt und farbig hervorgehoben.
Konzepte und Nutzung
Historisch gesehen war eine der Hauptfunktionen des Webs immer die Fähigkeit, Links zwischen verschiedenen Dokumenten bereitzustellen — das ist es, was das Web zu einem Netz macht:
- Sie können den Anfang eines Dokuments verlinken, indem Sie auf dessen URL verlinken, zum Beispiel:
- Sie können auf einen bestimmten Abschnitt eines Dokuments verlinken, indem Sie auf dessen URL plus das Dokumentfragment (ID) dieses Abschnitts verlinken, zum Beispiel:
Das Problem beim Verlinken auf bestimmte Dokumentfragmente besteht darin, dass der Autor der verlinkten Seite einen Anker bereitstellen muss, um tatsächlich darauf zu verlinken. Das zweite Beispiel oben verlinkt auf ein h2-Element mit der ID browser_compatibility:
<h2 id="browser_compatibility">
<a href="#browser_compatibility">Browser compatibility</a>
</h2>
Nicht alle Dokumente haben solche Anker, und selbst wenn sie das tun, ist das Verlinken zu einer Überschrift möglicherweise viel weniger offensichtlich als das direkte Verlinken auf den spezifischen Text, den Sie zitieren. Hier kommen Textfragmente ins Spiel: Sie erlauben es dem Link-Autor, die volle Kontrolle darüber zu haben, auf welchen Text verlinkt werden soll, ohne spezielles Markup im Zieldokument zu erfordern. Beispielsweise kann eine Suchmaschine auf einen bestimmten Satz in ihren Suchergebnissen verweisen, und beim Klicken auf den Link gelangen Sie direkt zu diesem Satz.
Textfragmente haben jedoch auch eine Einschränkung: Text in einem Dokument ist weniger stabil als die Dokumentstruktur. Wenn der Text im verlinkten Dokument aktualisiert wird, stimmt das Fragment nicht mehr überein, und der Browser navigiert zum Anfang der Seite. Dies ist bei vorübergehenden Links wie in Suchergebnissen in Ordnung, aber wenn Sie beabsichtigen, dass der Link über die Zeit funktioniert, sind Dokumentfragmente möglicherweise zuverlässiger.
Syntax
https://example.com#:~:text=[prefix-,]textStart[,textEnd][,-suffix]
Textfragmente sind eine Art von URL-Fragment und werden nach dem # geschrieben. Die wichtigsten Teile sind folgende:
:~:-
Auch bekannt als das Fragment-Direktiv, teilt diese Zeichenfolge dem Browser mit, dass das, was folgt, eine oder mehrere Benutzeragenten-Anweisungen sind, die während des Ladens von der URL entfernt werden, sodass Autorenskripte nicht direkt mit ihnen interagieren können. Benutzeragenten-Anweisungen werden auch Direktiven genannt.
text=-
Eine Text-Direktive. Dies liefert ein Textfragment an den Browser, das definiert, welcher Text im verlinkten Dokument verlinkt werden soll.
textStart-
Eine Textzeichenfolge, die den Anfang des verlinkten Textes angibt.
textEndOptional-
Eine Textzeichenfolge, die das Ende des verlinkten Textes angibt.
prefix-Optional-
Eine Textzeichenfolge, gefolgt von einem Bindestrich, die angibt, welcher Text unmittelbar dem verlinkten Text vorausgehen soll, wobei nur Leerzeichen dazwischen erlaubt sind. Dies hilft dem Browser, den richtigen verlinkten Text auszuwählen, falls es mehrere Übereinstimmungen gibt.
-suffixOptional-
Ein Bindestrich, gefolgt von einer Textzeichenfolge, die angibt, welcher Text unmittelbar dem verlinkten Text folgen soll, wobei nur Leerzeichen dazwischen erlaubt sind. Dies hilft dem Browser, den richtigen verlinkten Text auszuwählen, falls es mehrere Übereinstimmungen gibt.
Unterstützende Browser scrollen zum und heben das erste Textfragment im verlinkten Dokument hervor, das der angegebenen Direktive entspricht. Beachten Sie, dass es möglich ist, mehrere Textfragmente in derselben URL zu spezifizieren, indem man sie mit Ampersand (&)-Zeichen trennt.
Nutzungsnotizen
-
Textzeichenfolgen, die für die
textStart,textEnd,prefix-und-suffixWerte verwendet werden, müssen prozentkodiert sein. Darüber hinaus erfordert der Standard, dass das URL-sichere Bindestrich-Zeichen'-'ähnlich prozentkodiert wird. -
Übereinstimmungen sind nicht von der Groß- und Kleinschreibung abhängig.
-
Einzelne
textStart,textEnd,prefix-und-suffixZeichenfolgen müssen sich vollständig innerhalb desselben Block-Level-Elements befinden, aber vollständige Übereinstimmungen können sich über mehrere Elementgrenzen erstrecken. -
Aus Sicherheitsgründen sollten Sie, wenn Sie mit dieser Funktion auf eine seitenübergreifende Seite verlinken, den Link in einem
noopener-Kontext öffnen — Sie müssenrel="noopener"zu Ihren<a>-Elementen hinzufügen undnoopenerzu Ihrenwindow.open()Aufrufen hinzufügen, wenn Sie diese Funktion verwenden. -
Textfragmente werden nur bei benutzerinitiierten Navigationen aufgerufen.
-
Textfragmente gelten nur für den Hauptframe; Text wird nicht innerhalb von
<iframe>s durchsucht, undiframe-Navigation wird kein Textfragment aufrufen. -
Für Seiten, die sich abmelden möchten, unterstützen Chromium-basierte Browser einen Document Policy Header-Wert, den sie senden können, damit Benutzeragenten keine Textfragmente verarbeiten:
httpDocument-Policy: force-load-at-top
Hinweis: Wenn das bereitgestellte Textfragment mit keinem Text im verlinkten Dokument übereinstimmt oder wenn der Browser Textfragmente nicht unterstützt, wird das gesamte Textfragment ignoriert und der Anfang des Dokuments verlinkt.
Beispiele
>Textfragment mit textStart
- https://example.com/#:~:text=use scrollt und hebt die erste Instanz des Textes
useim Dokument hervor. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=human scrollt und hebt die erste Instanz des Textes
humanim Dokument hervor. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=linked%20URL scrollt und hebt die erste Instanz des Textes
linked URLim Dokument hervor.
textStart und textEnd
- https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=human,URL scrollt und hebt die erste Instanz einer Textzeichenfolge hervor, die mit
humanbeginnt und mitURLendet. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=linked%20URL,defining%20a%20value scrollt und hebt die erste Instanz einer Textzeichenfolge hervor, die mit
linked URLbeginnt und mitdefining a valueendet. Beachten Sie, wie sich der hervorgehobene Text über mehrere Block-Level-Elemente erstreckt.
Beispiele mit prefix- und/oder -suffix
- https://example.com/#:~:text=avoid-,use scrollt und hebt die zweite Instanz des Textes
useim Dokument hervor. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=sent-,referrer scrollt und hebt die erste Instanz des Textes
referrerhervor, der direkt vonsentgefolgt wird. Dies ist die 5. Instanz vonreferrerim Dokument; ohne das Präfix würde die erste Instanz hervorgehoben werden. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=linked%20URL,-'s%20format scrollt und hebt die erste Instanz des Textes
linked URLhervor, dem direkt's formatfolgt. Dies ist die 5. Instanz vonlinked URLim Dokument; ohne das Suffix würde die erste Instanz hervorgehoben werden. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=downgrade%3A-,The%20Referer,be%20sent,-to%20origins scrollt und hebt die Instanz des Textes
The Referer ... be senthervor, die vondowngrade:vorangestellt und vonto originsgefolgt wird. Dies illustriert ein komplexeres Beispiel, bei dem Präfix/Suffix verwendet werden, um die spezifische Textinstanz zu finden, zu der Sie verlinken möchten. Versuchen Sie zum Beispiel, das Präfix zu entfernen, und sehen Sie, was übereinstimmt.
URLs mit mehreren Textfragmenten
Sie können mehrere Textfragmente angeben, um in derselben URL hervorgehoben zu werden, indem Sie sie mit Ampersand (&)-Zeichen trennen. Lassen Sie uns ein paar Beispiele betrachten:
- https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=Causes&text=linked scrollt und hebt die ersten Instanzen der Textzeichenfolgen
Causesundlinkedhervor. - https://developer.mozilla.org/de/docs/Web/HTML/Reference/Elements/a#:~:text=linked%20URL,-'s%20format&text=Deprecated-,attributes,attribute scrollt und hebt zwei Textinstanzen hervor:
- Die erste Instanz des Textes
linked URL, dem direkt's formatfolgt. - Die erste Instanz einer Textzeichenfolge, die mit
attributesbeginnt und mitattributeendet, die vonDeprecatedvorangestellt wird.
- Die erste Instanz des Textes
Wenn Sie eines oder mehrere Ihrer Textfragmente nicht hervorgehoben sehen und sich sicher sind, dass Ihre Syntax korrekt ist, heben Sie möglicherweise einfach eine andere Instanz hervor als die erwartete. Sie könnte hervorgehoben sein, aber außerhalb des Bildschirms.
Gestaltung von hervorgehobenen Textfragmenten
Browser sind frei, den hervorgehobenen Text auf jede Weise zu gestalten, die sie standardmäßig wählen. Das CSS Pseudo-Elements Module Level 4 definiert ein Pseudo-Element, ::target-text, das es Ihnen ermöglicht, benutzerdefinierte Stile zu spezifizieren.
Zum Beispiel haben wir in unserem scroll-to-text Demo folgendes CSS:
::target-text {
background-color: rebeccapurple;
color: white;
}
Versuchen Sie, den obigen Link in einem unterstützenden Browser zu folgen, um die Wirkung zu sehen.
Erkennbarkeit der Funktion
Das FragmentDirective Objekt, das über die Document.fragmentDirective Eigenschaft zugänglich ist, kann verwendet werden, um zu testen, ob Textfragmente in einem Browser unterstützt werden.
Versuchen Sie, das folgende in den Entwickler-Tools eines unterstützenden Browsers auszuführen, in einem Tab mit einem oder mehreren passenden Textfragmenten:
document.fragmentDirective;
// returns an empty FragmentDirective object, if supported
// undefined otherwise
Diese Funktionalität ist derzeit hauptsächlich für die Erkennung von Funktionen gedacht. In Zukunft könnte das FragmentDirective-Objekt zusätzliche Informationen enthalten.
Referenz
>API
FragmentDirective-
Ein Objekt, das die Textfragmente repräsentiert. Zurzeit leer und hauptsächlich für die Erkennung von Funktionen gedacht.
Document.fragmentDirective-
Gibt das
FragmentDirectivefür das aktuelle Dokument zurück.
CSS
::target-text-
Repräsentiert die hervorgehobenen Textfragmente im aktuellen Dokument. Es ermöglicht Autoren, die Gestaltung der Textfragmente anzupassen.
Spezifikationen
| Spezifikation |
|---|
| URL Fragment Text Directives> # fragmentdirective> |
| CSS Pseudo-Elements Module Level 4> # selectordef-target-text> |