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:
- Ereignisse, die Videospuren betreffen, werden immer an die
VideoTrackList
gesendet, die inHTMLMediaElement.videoTracks
zu finden ist. - Ereignisse, die Audiospuren betreffen, werden immer an die
AudioTrackList
gesendet, die inHTMLMediaElement.audioTracks
angegeben ist. - Ereignisse, die Textspuren betreffen, werden an das
TextTrackList
-Objekt gesendet, das durchHTMLMediaElement.textTracks
angezeigt wird.
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
Schreibgeschützt-
Das DOM-Spurobjekt, auf das sich das Ereignis bezieht. Wenn nicht
null
, ist dies immer ein Objekt eines der Medienspurtypen:AudioTrack
,VideoTrack
oderTextTrack
.
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.
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