Start · Sprachen · JavaScript · Referenz · HTMLLinkElement.as

HTMLLinkElement.as

Eigenschaft

Liest oder setzt den Inhaltstyp (z. B. <code>"script"</code>, <code>"style"</code>, <code>"font"</code>), den ein <code>&lt;link rel="preload"&gt;</code>-Element vorladen soll. Entspricht dem HTML-Attribut <code>as</code>.

seit JavaScript Baseline: alle modernen Browser (Chrome 50+, Firef Kategorie: webapi

Signatur

HTMLLinkElement.as

Beschreibung

Die Eigenschaft as des HTMLLinkElement-Interfaces spiegelt das HTML-Attribut as wider. Sie gibt als String an, welche Art von Ressource ein <link> mit rel="preload" oder rel="modulepreload" lädt. Die Eigenschaft kann gelesen und geschrieben werden.

Anhand dieses Werts setzt der Browser die richtige Ladepriorität, den passenden Accept-Header und die zugehörige Content Security Policy-Direktive (z. B. script-src oder font-src). Außerdem kann er die vorgeladene Ressource später nur dann aus dem Speicher wiederverwenden, wenn as zum tatsächlichen Verwendungszweck passt. Stimmt der Typ nicht, lädt der Browser die Datei doppelt.

Gültige Werte sind unter anderem "audio", "document", "embed", "fetch", "font", "image", "object", "script", "style", "track", "video" und "worker". Ein ungültiger oder fehlender Wert ergibt beim Lesen einen leeren String "", denn das Attribut ist ein enumeriertes Attribut, und der Browser normalisiert ungültige Werte.

Die Eigenschaft wird vor allem dann gebraucht, wenn Preload-Hinweise dynamisch per JavaScript erzeugt werden, etwa um Schriftarten, Bilder für die nächste Ansicht oder Daten für einen späteren fetch()-Aufruf früh anzufordern.

Rückgabewert

Typ
string
Beschreibung
Der normalisierte Inhaltstyp in Kleinbuchstaben, z. B. "script" oder "font". Fehlt das Attribut oder ist sein Wert ungültig, ist das Ergebnis ein leerer String "". Beim Setzen wird der String in das Attribut as geschrieben.

Beispiele

Wert eines vorhandenen Preload-Links lesen

// HTML: <link id="hauptSkript" rel="preload" href="/app.js" as="script">
const link = document.getElementById('hauptSkript');
console.log(link.as);
console.log(link.getAttribute('as'));
script script

Schriftart dynamisch vorladen

const preloadFont = (url) => {
  const link = document.createElement('link');
  link.rel = 'preload';
  link.as = 'font';
  link.type = 'font/woff2';
  link.href = url;
  // Für Schriftarten Pflicht, sonst wird die Datei doppelt geladen
  link.crossOrigin = 'anonymous';
  document.head.append(link);
  return link;
};

const fontLink = preloadFont('/fonts/inter.woff2');
console.log(fontLink.as);
font

Daten für späteren fetch()-Aufruf vorladen

const link = document.createElement('link');
link.rel = 'preload';
link.as = 'fetch';
link.href = '/api/produkte.json';
link.crossOrigin = 'anonymous';
document.head.append(link);

// Später: der Browser nimmt die Antwort aus dem Preload-Speicher
const ladeProdukte = async () => {
  const res = await fetch('/api/produkte.json', { mode: 'cors', credentials: 'same-origin' });
  return res.json();
};

ladeProdukte().then((daten) => console.log(daten.length));
z. B. 42

Ungültige Werte werden zu leerem String

const link = document.createElement('link');
link.rel = 'preload';
link.as = 'Stylesheet'; // kein gültiger Wert
console.log(JSON.stringify(link.as));
console.log(link.getAttribute('as'));

link.as = 'STYLE'; // Groß-/Kleinschreibung spielt keine Rolle
console.log(link.as);
"" Stylesheet style

// Wichtig · Fallstricke

  • Pflicht bei rel="preload": Fehlt as oder ist der Wert ungültig, wird die Ressource in den meisten Browsern gar nicht vorgeladen, und in der Konsole erscheint eine Warnung.
  • Doppeltes Laden: Wenn as, crossOrigin oder die URL nicht exakt zur späteren Nutzung passen, wird die Ressource ein zweites Mal geladen. Bei as="font" und as="fetch" ist crossorigin praktisch immer nötig, auch bei gleicher Herkunft.
  • Ungenutzte Preloads: Chrome warnt, wenn eine vorgeladene Ressource nicht innerhalb weniger Sekunden nach dem load-Ereignis verwendet wird. Deshalb nur wirklich benötigte Ressourcen vorladen.
  • CSP: Die Anfrage wird mit der Direktive geprüft, die zum as-Wert gehört (z. B. font-src bei "font"). Ein falscher Typ kann dazu führen, dass die Anfrage blockiert wird.
  • modulepreload: Hier ist as optional, Standardwert ist "script".
  • Kompatibilität: Die Eigenschaft wird von allen aktuellen Browsern unterstützt. Firefox unterstützt preload erst ab Version 85 standardmäßig. Mit link.relList.supports('preload') lässt sich die Unterstützung vorab prüfen.