Start · Sprachen · JavaScript · Referenz · HTMLLinkElement.disabled

HTMLLinkElement.disabled

Eigenschaft

Boolescher Wert, der angibt, ob ein <code>&lt;link&gt;</code>-Element deaktiviert ist. Bei Stylesheets wird das Stylesheet dann nicht angewendet. Spiegelt das HTML-Attribut <code>disabled</code> wider.

seit JavaScript Baseline: alle modernen Browser Kategorie: webapi

Signatur

HTMLLinkElement.disabled

Beschreibung

Die Eigenschaft disabled des HTMLLinkElement-Interfaces spiegelt das HTML-Attribut disabled eines <link>-Elements wider. Sie ist nur bei Links mit rel="stylesheet" (bzw. rel="alternate stylesheet") wirksam: Ist sie true, wird das verknüpfte Stylesheet nicht auf das Dokument angewendet.

Wenn Sie die Eigenschaft auf true setzen, fügt der Browser dem Element das Attribut disabled hinzu. Mit false wird das Attribut entfernt, und das Stylesheet wird (bei Bedarf erst jetzt) geladen und angewendet. Steht das Attribut schon im HTML-Quelltext, lädt der Browser das Stylesheet zunächst gar nicht. Deshalb ist link.sheet in diesem Fall null.

Typische Einsatzfälle sind Themenwechsel (hell/dunkel), optionale Stylesheets für Barrierefreiheit (z. B. hoher Kontrast) und das Umschalten zwischen alternativen Stylesheets, ohne Elemente aus dem DOM entfernen oder neu einfügen zu müssen.

Parameter

Name Typ Default Beschreibung
$value boolean false Beim Setzen: true deaktiviert den Link und fügt das Attribut disabled hinzu, false entfernt das Attribut. Andere Werte werden in einen booleschen Wert umgewandelt.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn das Attribut disabled am <link>-Element gesetzt ist, sonst false.

Beispiele

Status eines Stylesheets abfragen

// HTML: <link id="dark" rel="stylesheet" href="dark.css" disabled>
const darkLink = document.querySelector('#dark');
console.log(darkLink.disabled);
console.log(darkLink.hasAttribute('disabled'));
console.log(darkLink.sheet); // nicht geladen
true true null

Dunkles Theme per Button umschalten

// HTML:
// <link id="theme-dark" rel="stylesheet" href="dark.css" disabled>
// <button id="toggle">Theme wechseln</button>
const darkTheme = document.querySelector('#theme-dark');
const toggle = document.querySelector('#toggle');

// gespeicherte Einstellung wiederherstellen
darkTheme.disabled = localStorage.getItem('theme') !== 'dark';

toggle.addEventListener('click', () => {
  darkTheme.disabled = !darkTheme.disabled;
  localStorage.setItem('theme', darkTheme.disabled ? 'light' : 'dark');
  console.log(`Dunkles Theme aktiv: ${!darkTheme.disabled}`);
});
Dunkles Theme aktiv: true

Zwischen alternativen Stylesheets wechseln

// HTML:
// <link rel="stylesheet" title="Standard" href="default.css">
// <link rel="alternate stylesheet" title="Kontrast" href="contrast.css">
const activateStyle = (title) => {
  const links = document.querySelectorAll('link[rel~="stylesheet"][title]');
  links.forEach((link) => {
    link.disabled = link.title !== title;
  });
};

activateStyle('Kontrast');
console.log(
  [...document.querySelectorAll('link[title]')]
    .map((l) => `${l.title}: ${l.disabled ? 'aus' : 'an'}`)
);
["Standard: aus", "Kontrast: an"]

// Wichtig · Fallstricke

  • Nicht mit CSSStyleSheet.disabled verwechseln: link.sheet.disabled schaltet nur das bereits geladene Stylesheet-Objekt um und ändert das HTML-Attribut nicht. link.disabled dagegen setzt oder entfernt das Attribut. Ist das Attribut schon im HTML vorhanden, ist link.sheet null, und Zugriffe wie link.sheet.disabled werfen einen TypeError.
  • Nur für Stylesheets wirksam: Bei anderen rel-Werten (z. B. preload, icon) hat die Eigenschaft keine sichtbare Wirkung.
  • Verzögertes Laden: Wird ein zu Beginn deaktiviertes Stylesheet aktiviert, lädt der Browser es erst dann. Das kann kurz ungestylte Inhalte oder Layoutsprünge verursachen. Abhilfe: die Datei vorher mit <link rel="preload" as="style"> vorladen oder auf das load-Ereignis des Links warten.
  • Browser-Kompatibilität: Die Eigenschaft wird von allen modernen Browsern unterstützt. Ältere Versionen haben sich unterschiedlich verhalten: Früher wurde die Eigenschaft nicht immer mit dem HTML-Attribut synchronisiert, und das Attribut im Quelltext wurde teils ignoriert. Wenn Sie ältere Browser unterstützen müssen, testen Sie gezielt.