TrackEvent

Die TrackEvent-Schnittstelle der HTML DOM API wird für Ereignisse verwendet, die Änderungen an einer Gruppe von verfügbaren Spuren auf einem HTML-Medienelement darstellen; diese Ereignisse sind addtrack und removetrack.

Es ist wichtig, TrackEvent nicht mit der RTCTrackEvent-Schnittstelle zu verwechseln, die für Spuren verwendet wird, die Teil einer RTCPeerConnection sind.

Ereignisse, die auf TrackEvent basieren, werden immer an einen der Medienspur-Listentypen gesendet:

Event TrackEvent

Konstruktor

TrackEvent()

Erstellt und initialisiert ein neues TrackEvent-Objekt mit dem angegebenen Ereignistyp, sowie optionalen zusätzlichen Eigenschaften.

Instanz-Eigenschaften

TrackEvent basiert auf Event, daher sind die Eigenschaften von Event auch auf TrackEvent-Objekten verfügbar.

track Nur lesbar

Das DOM-Spurobjekt, auf das sich das Ereignis bezieht. Wenn nicht null, ist dies immer ein Objekt eines der Medienspurtypen: AudioTrack, VideoTrack oder TextTrack.

Instanz-Methoden

TrackEvent hat keine eigenen Methoden; es basiert jedoch auf Event, sodass es die Methoden bereitstellt, die auf Event-Objekten verfügbar sind.

Beispiel

Dieses Beispiel richtet eine Funktion handleTrackEvent() ein, die für jedes addtrack- oder removetrack-Ereignis des ersten <video>-Elements im Dokument aufgerufen wird.

js
const videoElem = document.querySelector("video");

videoElem.videoTracks.addEventListener("addtrack", handleTrackEvent, false);
videoElem.videoTracks.addEventListener("removetrack", handleTrackEvent, false);
videoElem.audioTracks.addEventListener("addtrack", handleTrackEvent, false);
videoElem.audioTracks.addEventListener("removetrack", handleTrackEvent, false);
videoElem.textTracks.addEventListener("addtrack", handleTrackEvent, false);
videoElem.textTracks.addEventListener("removetrack", handleTrackEvent, false);

function handleTrackEvent(event) {
  let trackKind;

  if (event.target instanceof VideoTrackList) {
    trackKind = "video";
  } else if (event.target instanceof AudioTrackList) {
    trackKind = "audio";
  } else if (event.target instanceof TextTrackList) {
    trackKind = "text";
  } else {
    trackKind = "unknown";
  }

  switch (event.type) {
    case "addtrack":
      console.log(`Added a ${trackKind} track`);
      break;
    case "removetrack":
      console.log(`Removed a ${trackKind} track`);
      break;
  }
}

Der Ereignishandler verwendet den JavaScript-Operator instanceof, um zu bestimmen, welcher Typ von Spur das Ereignis aufgetreten ist, und gibt dann eine Nachricht an die Konsole aus, die anzeigt, um welche Art von Spur es sich handelt und ob sie zum Element hinzugefügt oder davon entfernt wird.

Spezifikationen

Specification
HTML Standard
# the-trackevent-interface

Browser-Kompatibilität

BCD tables only load in the browser