Start · Sprachen · JavaScript · Referenz · Document.linkColor

Document.linkColor

Eigenschaft

Liest oder setzt die Farbe noch nicht besuchter Links im Dokument. Die Eigenschaft spiegelt das veraltete <code>link</code>-Attribut des <code>&lt;body&gt;</code>-Elements wider.

seit JavaScript Veraltet (deprecated) – aus Kompatibilitätsgründen deprecated seit ja Kategorie: webapi

Signatur

Document.linkColor

Beschreibung

document.linkColor ist ein Überbleibsel aus der Frühzeit des Webs. Die Eigenschaft ist direkt mit dem veralteten HTML-Attribut link des <body>-Elements verknüpft. Lesen gibt den Wert dieses Attributs als Zeichenkette zurück. Schreiben setzt das Attribut <body link="…">. Das wirkt sich auf alle <a href>-Links aus, die noch nicht besucht wurden und für die keine CSS-Regel eine eigene Farbe festlegt.

Als Wert sind Farbnamen ("red") oder Hex-Werte ("#0000ee") üblich. Hat <body> kein link-Attribut oder gibt es noch kein <body> (etwa bei einem Skript im <head>), liefert die Eigenschaft eine leere Zeichenkette "".

Verwendet wird die Eigenschaft heute fast nur noch in altem Code oder bei der Wartung von Legacy-Seiten. In neuem Code sollte man Linkfarben immer mit CSS festlegen, z. B. mit den Pseudoklassen :link, :visited, :hover und :active oder mit benutzerdefinierten Eigenschaften (CSS-Variablen).

Parameter

Name Typ Default Beschreibung
$value string "" Nur beim Setzen: eine Farbangabe als Zeichenkette, z. B. "blue" oder "#0645ad". Der Wert wird unverändert in das link-Attribut von <body> geschrieben.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des link-Attributs von document.body. Ist das Attribut nicht gesetzt oder gibt es kein <body>, ist das Ergebnis "". Der Wert wird so zurückgegeben, wie er gesetzt wurde. Er wird also nicht in die tatsächlich berechnete Farbe umgerechnet.

Beispiele

Linkfarbe lesen und setzen

// Ausgangslage: <body> ohne link-Attribut
console.log(JSON.stringify(document.linkColor));

document.linkColor = '#0645ad';
console.log(document.linkColor);
console.log(document.body.getAttribute('link'));
"" #0645ad #0645ad

Zusammenhang mit dem body-Attribut

// Das Attribut direkt setzen wirkt genauso
document.body.setAttribute('link', 'green');
console.log(document.linkColor);

// Attribut entfernen → Standardfarbe des Browsers
document.body.removeAttribute('link');
console.log(JSON.stringify(document.linkColor));
green ""

Legacy-Code auf CSS umstellen

// Alt (veraltet):
// document.linkColor = 'crimson';

// Modern: Farbe über eine CSS-Variable steuern
const style = document.createElement('style');
style.textContent = `
  a:link { color: var(--link-color, #0645ad); }
  a:visited { color: var(--visited-color, #0b0080); }
`;
document.head.append(style);

const setLinkColor = (color) =>
  document.documentElement.style.setProperty('--link-color', color);

setLinkColor('crimson');
console.log(getComputedStyle(document.documentElement).getPropertyValue('--link-color'));
crimson

Aufruf vor dem Vorhandensein von <body>

// Skript im <head>, document.body ist noch null
console.log(document.body);            // null
document.linkColor = 'red';            // keine Wirkung
console.log(JSON.stringify(document.linkColor));
null ""

// Wichtig · Fallstricke

  • Veraltet: Die Eigenschaft ist nicht mehr Teil des empfohlenen Standards und steht nur noch aus Kompatibilitätsgründen im HTML-Standard (Abschnitt „obsolete features“). Die Browser unterstützen sie weiterhin, in neuem Code sollte man aber CSS verwenden (a:link { color: … }).
  • CSS hat Vorrang: Das link-Attribut wirkt wie eine CSS-Regel mit sehr geringer Priorität. Jede Autoren-Regel für a oder a:link überschreibt es. Deshalb scheint das Setzen von linkColor oft „nichts zu tun“.
  • Kein <body>: Vor dem Parsen von <body> und in Framesets gibt die Eigenschaft "" zurück, und Zuweisungen werden ignoriert.
  • Keine Normalisierung: Zurückgegeben wird der Rohwert des Attributs, nicht die berechnete Farbe. Die tatsächliche Farbe liefert getComputedStyle(link).color.
  • Besuchte und aktive Links werden über die ebenfalls veralteten Eigenschaften vlinkColor und alinkColor gesteuert.