Signatur
Beschreibung
Die Eigenschaft controlsList spiegelt das HTML-Attribut controlslist von <audio>- und <video>-Elementen wider. Sie liefert eine DOMTokenList, über die du einzelne Steuerelemente der eingebauten Browser-Bedienleiste ausblenden kannst. Wirkung hat sie nur, wenn die Standard-Bedienelemente überhaupt angezeigt werden, also das Attribut controls gesetzt ist.
Unterstützt werden diese Token:
nodownload: blendet die Download-Schaltfläche ausnofullscreen: blendet die Vollbild-Schaltfläche ausnoremoteplayback: blendet die Schaltfläche für die Remote-Wiedergabe (Cast) ausnoplaybackrate: blendet die Auswahl der Wiedergabegeschwindigkeit aus (Chrome 87+)
Die Eigenschaft ist nur lesbar, die Liste selbst kannst du aber mit den üblichen DOMTokenList-Methoden ändern, also add(), remove(), toggle(), contains() und supports(). Wenn du der Eigenschaft einen String zuweist, wird er an value weitergegeben und ersetzt den Attributwert. Nutze die Eigenschaft, wenn du die native Bedienleiste für einen bestimmten Zweck vereinfachen willst, ohne gleich eigene Bedienelemente zu bauen.
Rückgabewert
DOMTokenList mit den Token aus dem Attribut controlslist. Ist das Attribut nicht gesetzt, ist die Liste leer.Beispiele
Download- und Vollbild-Schaltfläche ausblenden
const video = document.querySelector('video');
video.controls = true;
// Steuerelemente ausblenden (nur wenn die Eigenschaft existiert)
if ('controlsList' in video) {
video.controlsList.add('nodownload', 'nofullscreen');
}
console.log(video.controlsList.value);
console.log(video.getAttribute('controlslist'));
Unterstützte Token per supports() prüfen
const audio = new Audio('podcast.mp3');
audio.controls = true;
document.body.append(audio);
const gewuenscht = ['nodownload', 'noplaybackrate', 'noremoteplayback'];
for (const token of gewuenscht) {
if (audio.controlsList?.supports(token)) {
audio.controlsList.add(token);
} else {
console.warn(`Token nicht unterstützt: ${token}`);
}
}
console.log([...audio.controlsList]);
Vollbild-Schaltfläche per Einstellung ein- und ausschalten
const video = document.querySelector('#lernvideo');
const checkbox = document.querySelector('#vollbild-erlauben');
checkbox.addEventListener('change', () => {
// toggle(token, force): mit force=true hinzufügen, mit false entfernen
video.controlsList.toggle('nofullscreen', !checkbox.checked);
console.log('controlslist =', video.controlsList.value || '(leer)');
});
Gesamte Liste per Zuweisung ersetzen
const video = document.querySelector('video');
// Die Zuweisung eines Strings setzt DOMTokenList.value
video.controlsList = 'nodownload noremoteplayback';
console.log(video.controlsList.contains('nodownload'));
video.controlsList = '';
console.log(video.controlsList.length);
// Wichtig · Fallstricke
Kompatibilität: controlsList ist nicht standardisiert (WICG-Vorschlag) und funktioniert nur in Chromium-Browsern (Chrome, Edge, Opera, Samsung Internet). Firefox und Safari kennen die Eigenschaft nicht, dort ist sie undefined. Prüfe sie daher vorher, etwa mit 'controlsList' in element oder optionaler Verkettung (?.).
Kein Schutz vor Kopien: nodownload blendet nur die Schaltfläche aus. Die Mediendatei lässt sich weiterhin über die URL, die Entwicklerwerkzeuge oder das Kontextmenü (Rechtsklick → „Video speichern unter“) herunterladen. Für echten Schutz brauchst du serverseitige Maßnahmen oder DRM (Encrypted Media Extensions).
Weitere Fallstricke:
- Ohne das Attribut
controlshat die Eigenschaft keine sichtbare Wirkung. nofullscreenentfernt nur die Schaltfläche. Ein Doppelklick auf das Video oderrequestFullscreen()per Skript kann weiterhin in den Vollbildmodus schalten. Für einen vollständigen Ausschluss brauchst du zusätzlichdisablePictureInPictureoder eine passende Permissions Policy.- Unbekannte Token lösen keinen Fehler aus, sie werden einfach ignoriert. Mit
supports()kannst du vorher prüfen, ob ein Token bekannt ist.