Start · Sprachen · JavaScript · Referenz · HTMLVideoElement.poster

HTMLVideoElement.poster

Eigenschaft

Liest oder setzt die URL des Vorschaubilds (<code>poster</code>-Attribut), das angezeigt wird, solange noch keine Videodaten verfügbar sind.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLVideoElement.poster

Beschreibung

Die Eigenschaft poster spiegelt das HTML-Attribut poster eines <video>-Elements wider. Sie enthält die URL eines Bildes, das der Browser anzeigt, solange noch kein Videobild zur Verfügung steht, also vor dem Laden, vor dem ersten Abspielen oder wenn das Video nicht geladen werden kann.

Beim Lesen liefert die Eigenschaft die aufgelöste, absolute URL, auch wenn im Attribut ein relativer Pfad steht. Ist kein Attribut gesetzt, bekommt man einen leeren String "". Beim Schreiben wird das Attribut poster aktualisiert, und der Browser lädt das neue Bild.

Typische Einsatzfälle sind dynamische Videoplayer, Playlists mit eigenem Vorschaubild pro Clip, Lazy-Loading (erst Poster zeigen, dann bei Bedarf das Video laden) sowie Platzhalter bei preload="none", damit keine schwarze Fläche zu sehen ist.

Parameter

Name Typ Default Beschreibung
$value string "" Beim Setzen: URL (relativ oder absolut) des Bildes, das als Vorschaubild dienen soll. Ein leerer String entfernt praktisch das Poster, das Attribut selbst bleibt aber bestehen.

Rückgabewert

Typ
string
Beschreibung
Die absolute, aufgelöste URL des Posterbildes oder "", wenn kein poster-Attribut gesetzt ist.

Beispiele

Poster auslesen (relative URL wird aufgelöst)

// HTML: <video id="clip" src="intro.mp4" poster="img/intro.jpg" controls></video>
const video = document.querySelector('#clip');

console.log(video.poster);                  // absolute URL
console.log(video.getAttribute('poster'));  // Originalwert aus dem Attribut
https://example.com/img/intro.jpg img/intro.jpg

Playlist: Video und Poster gemeinsam wechseln

const playlist = [
  { src: 'videos/teil1.mp4', poster: 'posters/teil1.jpg' },
  { src: 'videos/teil2.mp4', poster: 'posters/teil2.jpg' }
];

const video = document.querySelector('video');

const loadClip = (index) => {
  const { src, poster } = playlist[index];
  video.poster = poster;  // zuerst das Vorschaubild setzen
  video.src = src;
  video.load();           // Poster wird angezeigt, bis Daten da sind
};

loadClip(1);
console.log(video.poster.endsWith('posters/teil2.jpg'));
true

Lazy-Video mit Poster erzeugen und Poster entfernen

const video = document.createElement('video');
video.preload = 'none';           // keine Videodaten vorab laden
video.poster = '/img/vorschau.webp';
video.controls = true;
video.src = '/media/film.mp4';
document.body.append(video);

console.log(video.hasAttribute('poster')); // true

// Poster später vollständig entfernen:
video.removeAttribute('poster');
console.log(JSON.stringify(video.poster));
true ""

// Wichtig · Fallstricke

  • Absolute URL beim Lesen: video.poster liefert immer die aufgelöste URL. Wer den Originalwert aus dem Markup braucht, nimmt getAttribute('poster'). Vergleiche mit relativen Pfaden schlagen deshalb fehl.
  • Entfernen: video.poster = '' lässt das Attribut leer stehen. Um es ganz zu entfernen, nutzt man removeAttribute('poster').
  • Anzeigedauer: Das Poster verschwindet, sobald das erste Videobild gezeigt wird, spätestens bei der Wiedergabe. Ohne Poster zeigen viele Browser bei preload="metadata" oder "auto" das erste Frame, bei preload="none" dagegen nur eine leere Fläche. Nach dem Abspielen erscheint das Poster erst wieder, wenn load() aufgerufen wird.
  • Seitenverhältnis: Das Poster wird im Seitenverhältnis des Videoelements eingepasst (wie object-fit: contain). Wenn die Maße abweichen, entstehen Balken. Deshalb sollte das Posterbild dieselben Proportionen wie das Video haben.
  • Sicherheit/CSP: Das Posterbild wird wie ein Bild geladen und unterliegt der CSP-Direktive img-src, nicht media-src. URLs aus Benutzereingaben sollte man prüfen, damit keine Tracking-Pixel oder unerwünschten Fremdquellen eingebunden werden.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Auf manchen mobilen Geräten kann der Browser das Poster durch eigene Steuerelemente überlagern oder im Vollbild ausblenden.