Signatur
Beschreibung
Die Eigenschaft seeking ist true, solange das Medienelement einen Suchvorgang (Seek) ausführt, also nachdem currentTime gesetzt oder fastSeek() aufgerufen wurde und bevor die Daten an der neuen Position verfügbar sind. Sobald der Sprung abgeschlossen ist, wird sie wieder false.
Der Wert wechselt passend zu den Events: Direkt vor dem seeking-Event wird die Eigenschaft auf true gesetzt, vor dem seeked-Event wieder auf false. So lässt sich jederzeit prüfen, ob die Wiedergabe gerade einen Sprung ausführt, etwa um Ladeanzeigen einzublenden, Fortschrittsbalken nicht zu überschreiben oder Analyse-Ereignisse (z. B. „Nutzer hat gespult“) sauber zu erfassen.
Typische Einsatzfälle sind eigene Player-Oberflächen, Synchronisation mehrerer Medienelemente und das Unterdrücken von timeupdate-Logik, während der Nutzer den Schieberegler bewegt.
Rückgabewert
true, wenn gerade ein Suchvorgang läuft, sonst false. Die Eigenschaft ist schreibgeschützt.Beispiele
Zustand direkt nach dem Setzen von currentTime prüfen
const video = document.querySelector('video');
video.addEventListener('loadedmetadata', () => {
console.log('Vorher:', video.seeking);
video.currentTime = 30; // Sprung auslösen
console.log('Direkt danach:', video.seeking);
});
video.addEventListener('seeked', () => {
console.log('Nach seeked:', video.seeking);
});
Ladeanzeige während des Spulens einblenden
const video = document.querySelector('#player');
const spinner = document.querySelector('#spinner');
const updateSpinner = () => {
spinner.hidden = !video.seeking;
};
video.addEventListener('seeking', updateSpinner);
video.addEventListener('seeked', updateSpinner);
timeupdate-Logik während eines Sprungs überspringen
const audio = document.querySelector('audio');
const progress = document.querySelector('progress');
audio.addEventListener('timeupdate', () => {
// Keine Fortschrittsmeldung, solange noch gesprungen wird
if (audio.seeking) return;
progress.value = audio.currentTime / audio.duration;
console.log(`Position: ${audio.currentTime.toFixed(1)} s`);
});
Auf Ende eines laufenden Sprungs warten (Promise)
const waitForSeek = (media) =>
media.seeking
? new Promise((resolve) => media.addEventListener('seeked', resolve, { once: true }))
: Promise.resolve();
const video = document.querySelector('video');
video.currentTime = 60;
await waitForSeek(video);
console.log('Bereit bei', video.currentTime);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
video.seeking = truewird ignoriert (im Strict Mode ohne Fehler, da nur ein Getter existiert). Einen Sprung löst man übercurrentTimeoderfastSeek()aus. - Sehr kurze Dauer: Bei bereits gepufferten Daten ist der Sprung oft nach wenigen Millisekunden abgeschlossen. Wer auf Zustandsänderungen reagieren will, sollte die Events
seeking/seekednutzen statt die Eigenschaft per Timer abzufragen. - Wird während eines laufenden Sprungs erneut
currentTimegesetzt, bricht der Browser den alten Sprung ab;seekedkommt dann meist nur einmal für die letzte Position. - Bei
readyState === HAVE_NOTHING(keine Metadaten) istseekingimmerfalse, auch wenncurrentTimegesetzt wurde. Der Sprung wird nachgeholt, sobald Metadaten da sind. - Kompatibilität: Wird in allen modernen Browsern seit Langem unterstützt (Baseline).