Start · Sprachen · JavaScript · Referenz · HTMLImageElement.fetchPriority

HTMLImageElement.fetchPriority

Eigenschaft

Gibt dem Browser einen Hinweis, mit welcher Priorität ein Bild im Vergleich zu anderen Bildern geladen werden soll: <code>"high"</code>, <code>"low"</code> oder <code>"auto"</code>.

seit JavaScript Chrome/Edge 101+, Safari 17.2+, Firefox 132+ (Base Kategorie: webapi

Signatur

HTMLImageElement.fetchPriority

Beschreibung

Die Eigenschaft fetchPriority spiegelt das HTML-Attribut fetchpriority eines <img>-Elements wider. Mit ihr sagst du dem Browser, wie wichtig ein Bild im Verhältnis zu anderen Ressourcen desselben Typs ist. Der Browser vergibt Prioritäten sonst selbst nach eigenen Regeln. Mit fetchPriority kannst du diese Regeln gezielt verschieben.

Am häufigsten nutzt man "high" für das LCP-Bild (Largest Contentful Paint), also etwa das große Titelbild oben auf der Seite. Browser laden Bilder anfangs meist mit niedriger Priorität, bis das Layout feststeht und klar ist, welche Bilder im sichtbaren Bereich liegen. Mit "high" fängt der Download sofort mit hoher Priorität an, und die Ladezeit des sichtbaren Hauptinhalts sinkt messbar. Umgekehrt eignet sich "low" für Bilder, die zwar im sichtbaren Bereich liegen, aber nicht wichtig sind, zum Beispiel die hinteren Folien eines Karussells.

Die Eigenschaft ist nur ein Hinweis: Der Browser muss sich nicht daran halten. Wenn du sie über JavaScript setzt, wirkt das nur, solange der Ladevorgang des Bildes noch nicht begonnen hat. Setze sie deshalb am besten, bevor du src oder srcset zuweist.

  • "high": Das Bild wird gegenüber anderen Bildern mit hoher Priorität geladen.
  • "low": Das Bild wird gegenüber anderen Bildern mit niedriger Priorität geladen.
  • "auto": Keine Vorgabe, der Browser entscheidet selbst. Das ist der Standardwert.

Parameter

Name Typ Default Beschreibung
$value "high" | "low" | "auto" "auto" Neuer Prioritätshinweis beim Setzen der Eigenschaft. Ungültige Werte werden als "auto" behandelt.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Prioritätshinweis als "high", "low" oder "auto". Fehlt das Attribut oder ist es ungültig, wird "auto" zurückgegeben.

Beispiele

Hohe Priorität für ein dynamisch eingefügtes Titelbild

const hero = new Image();
// Priorität VOR src setzen, damit der Hinweis beim Laden schon gilt
hero.fetchPriority = 'high';
hero.src = '/img/hero-1600.avif';
hero.alt = 'Sommerkollektion 2024';
hero.width = 1600;
hero.height = 900;
document.querySelector('.hero').append(hero);

console.log(hero.fetchPriority);
console.log(hero.getAttribute('fetchpriority'));
high high

Karussell: nur die erste Folie bevorzugen

// HTML: <div class="carousel"><img data-src="a.jpg"><img data-src="b.jpg"><img data-src="c.jpg"></div>
const slides = document.querySelectorAll('.carousel img');

slides.forEach((img, index) => {
  img.fetchPriority = index === 0 ? 'high' : 'low';
  img.src = img.dataset.src;
});

console.log([...slides].map((img) => img.fetchPriority));
["high", "low", "low"]

Wert auslesen, ungültige Werte und Feature-Erkennung

const img = document.createElement('img');
console.log(img.fetchPriority); // Attribut fehlt

img.setAttribute('fetchpriority', 'urgent'); // ungültiger Wert
console.log(img.fetchPriority);

const supported = 'fetchPriority' in HTMLImageElement.prototype;
console.log(`fetchPriority unterstützt: ${supported}`);
auto auto fetchPriority unterstützt: true

// Wichtig · Fallstricke

  • Zeitpunkt: Wenn du den Wert erst setzt, nachdem der Download schon begonnen hat, wirkt er meist nicht mehr. Setze ihn deshalb vor src bzw. srcset. Für Bilder im HTML ist das Attribut fetchpriority="high" direkt im Markup der beste Weg, denn der Preload-Scanner des Browsers liest es sehr früh.
  • Groß- und Kleinschreibung: Die JavaScript-Eigenschaft heißt fetchPriority (camelCase), das HTML-Attribut dagegen fetchpriority (alles klein).
  • Sparsam einsetzen: Wenn viele Bilder "high" bekommen, hebt sich die Wirkung auf. Oft konkurrieren sie dann sogar mit wichtigem CSS oder JavaScript. In der Regel verdient nur ein einziges Bild pro Seite, das LCP-Bild, eine hohe Priorität.
  • Nicht mit loading="lazy" kombinieren: Ein verzögert geladenes Bild wird erst angefordert, wenn es in die Nähe des sichtbaren Bereichs kommt. "high" beschleunigt daran nichts. LCP-Bilder sollten niemals loading="lazy" haben.
  • Kompatibilität: Unterstützt von Chrome/Edge ab 101, Safari ab 17.2 und Firefox ab 132. Ältere Browser ignorieren die Eigenschaft ohne Fehler, sie verbessert die Seite also schrittweise, ohne etwas zu brechen. In Chromium-Browsern kannst du die Wirkung in den DevTools im Netzwerk-Tab in der Spalte „Priority“ prüfen.