This feature is not Baseline because it does not work in some of the most widely-used browsers.
The change event is fired when a video track is made active or inactive, for example by changing the track's selected property.
Use the event name in methods like addEventListener(), or set an event handler property.
addEventListener("change", (event) => { })
onchange = (event) => { }
A generic Event with no added properties.
Using addEventListener():
const videoElement = document.querySelector("video");
videoElement.videoTracks.addEventListener("change", (event) => {
console.log(`'${event.type}' event fired`);
});
// changing the value of `selected` will trigger the `change` event
const toggleTrackButton = document.querySelector(".toggle-track");
toggleTrackButton.addEventListener("click", () => {
const track = videoElement.videoTracks[0];
track.selected = !track.selected;
});
Using the onchange event handler property:
const videoElement = document.querySelector("video");
videoElement.videoTracks.onchange = (event) => {
console.log(`'${event.type}' event fired`);
};
// changing the value of `selected` will trigger the `change` event
const toggleTrackButton = document.querySelector(".toggle-track");
toggleTrackButton.addEventListener("click", () => {
const track = videoElement.videoTracks[0];
track.selected = !track.selected;
});
| Specification |
|---|
| HTML> # event-media-change> |
| HTML> # handler-tracklist-onchange> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
change_event |
37 | 7912–79 | 33 | 24 | 7 | 37 | No | No | 7 | No | No | 7 |
addtrack, removetrack
AudioTrackList targets: change
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList/change_event