Start · Sprachen · JavaScript · Referenz · HTMLMediaElement.mediaGroup

HTMLMediaElement.mediaGroup

Eigenschaft

Spiegelt das HTML-Attribut <code>mediagroup</code> wider. Es gibt als Zeichenkette den Namen der Mediengruppe an, zu der ein <code>&lt;audio&gt;</code>- oder <code>&lt;video&gt;</code>-Element gehört.

seit JavaScript Veraltet und nicht standardisiert: aus der HTML-Sp deprecated seit ja Kategorie: webapi

Signatur

HTMLMediaElement.mediaGroup

Beschreibung

Die Eigenschaft mediaGroup spiegelt das Inhaltsattribut mediagroup eines Medienelements wider. Sie ist also ein Attribut, das Lesen und Schreiben erlaubt. Elemente mit demselben Gruppennamen im selben Dokument sollten automatisch einen gemeinsamen MediaController bekommen. So hätten sie synchron abgespielt, pausiert und gespult werden können. Ein typisches Beispiel ist ein Video mit einer zweiten Tonspur, etwa für Audiodeskription, oder mit einem Gebärdensprach-Video.

Das Konzept kam zusammen mit der MediaController-Schnittstelle in die HTML-Spezifikation. Mit ihr wurde es aber auch wieder entfernt. Nur ältere WebKit- und Chromium-Versionen haben es zeitweise umgesetzt. In aktuellen Browsern ist mediaGroup meist undefined. Das Setzen des Attributs hat dort keine Wirkung.

In neuem Code sollten Sie mediaGroup nicht verwenden. Synchronisieren Sie mehrere Medienelemente stattdessen selbst: Werten Sie die Ereignisse play, pause und seeked aus und gleichen Sie currentTime ab. Alternativ können Sie Audio über die Web Audio API zusammenführen oder mehrere Spuren in einer einzigen Mediendatei ausliefern, etwa über audioTracks oder videoTracks.

Rückgabewert

Typ
string | undefined
Beschreibung
Der Wert des Attributs mediagroup. Ist das Attribut nicht gesetzt, ist der Wert eine leere Zeichenkette. In Browsern ohne Unterstützung, also allen aktuellen, ist er undefined.

Beispiele

Unterstützung prüfen

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

// Prüfen, ob der Browser die Eigenschaft überhaupt kennt
const supportsMediaGroup = 'mediaGroup' in video;
console.log('mediaGroup unterstützt:', supportsMediaGroup);
console.log('Wert:', video.mediaGroup);
mediaGroup unterstützt: false Wert: undefined

Gruppennamen lesen und setzen (historische Nutzung)

// <video id="main" src="film.mp4" mediagroup="film"></video>
// <audio id="ad" src="audiodeskription.mp3" mediagroup="film"></audio>
const main = document.querySelector('#main');
const ad = document.querySelector('#ad');

if ('mediaGroup' in main) {
  console.log(main.mediaGroup); // "film"
  ad.mediaGroup = 'film';       // gemeinsamer MediaController
  console.log(main.controller === ad.controller);
} else {
  // Das Attribut ist weiterhin per DOM lesbar, aber ohne Funktion
  console.log(main.getAttribute('mediagroup'));
}
film

Moderner Ersatz: zwei Medien manuell synchronisieren

const syncMedia = (leader, follower) => {
  leader.addEventListener('play', () => {
    follower.currentTime = leader.currentTime;
    follower.play().catch(console.error);
  });
  leader.addEventListener('pause', () => follower.pause());
  leader.addEventListener('seeked', () => {
    follower.currentTime = leader.currentTime;
  });
  leader.addEventListener('ratechange', () => {
    follower.playbackRate = leader.playbackRate;
  });
  // Auseinanderlaufen regelmäßig korrigieren
  leader.addEventListener('timeupdate', () => {
    if (Math.abs(follower.currentTime - leader.currentTime) > 0.3) {
      follower.currentTime = leader.currentTime;
    }
  });
};

syncMedia(document.querySelector('#main'), document.querySelector('#ad'));

// Wichtig · Fallstricke

  • Veraltet: mediaGroup und MediaController wurden aus dem HTML Living Standard entfernt. Chrome hat sie um Version 36 entfernt, Safari hat sie ebenfalls abgebaut. Firefox hat sie nie unterstützt.
  • In aktuellen Browsern wird das HTML-Attribut mediagroup zwar im DOM gespeichert und ist über getAttribute() lesbar. Es hat aber keinerlei Wirkung auf die Wiedergabe.
  • Prüfen Sie die Unterstützung immer mit 'mediaGroup' in element. Verlassen Sie sich nicht darauf, dass Elemente automatisch synchron laufen.
  • Bei manueller Synchronisierung bleibt eine Abweichung von einigen zehn Millisekunden. Für exakt synchrones Audio ist die Web Audio API besser geeignet.
  • Autoplay-Richtlinien gelten für jedes Element einzeln. play() auf dem folgenden Element kann deshalb ohne Nutzerinteraktion abgelehnt werden.