diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js
index 27e02349c0..77e8d61b87 100644
--- a/src/components/htmlvideoplayer/plugin.js
+++ b/src/components/htmlvideoplayer/plugin.js
@@ -1192,44 +1192,43 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
}
var trackElement = null;
- var expectedId = 'manualTrack' + track.Index;
+ if (videoElement.textTracks && videoElement.textTracks.length > 0) {
+ trackElement = videoElement.textTracks[0];
- // get list of tracks
- var allTracks = videoElement.textTracks;
- for (var i = 0; i < allTracks.length; i++) {
-
- var currentTrack = allTracks[i];
-
- if (currentTrack.label === expectedId) {
- trackElement = currentTrack;
- break;
- } else {
- currentTrack.mode = 'disabled';
- }
- }
-
- if (!trackElement) {
- trackElement = videoElement.addTextTrack('subtitles', 'manualTrack' + track.Index, track.Language || 'und');
-
- // download the track json
- fetchSubtitles(track, item).then(function (data) {
-
- // show in ui
- console.log('downloaded ' + data.TrackEvents.length + ' track events');
- // add some cues to show the text
- // in safari, the cues need to be added before setting the track mode to showing
- data.TrackEvents.forEach(function (trackEvent) {
-
- var trackCueObject = window.VTTCue || window.TextTrackCue;
- var cue = new trackCueObject(trackEvent.StartPositionTicks / 10000000, trackEvent.EndPositionTicks / 10000000, normalizeTrackEventText(trackEvent.Text));
-
- trackElement.addCue(cue);
- });
+ // This throws an error in IE, but is fine in chrome
+ // In IE it's not necessary anyway because changing the src seems to be enough
+ try {
trackElement.mode = 'showing';
- });
+ while (trackElement.cues.length) {
+ trackElement.removeCue(trackElement.cues[0]);
+ }
+ } catch (e) {
+ console.log('Error removing cue from textTrack');
+ }
+
+ trackElement.mode = 'disabled';
} else {
- trackElement.mode = 'showing';
+ // There is a function addTextTrack but no function for removeTextTrack
+ // Therefore we add ONE element and replace its cue data
+ trackElement = videoElement.addTextTrack('subtitles', 'manualTrack', 'und');
}
+
+ // download the track json
+ fetchSubtitles(track, item).then(function (data) {
+
+ // show in ui
+ console.log('downloaded ' + data.TrackEvents.length + ' track events');
+ // add some cues to show the text
+ // in safari, the cues need to be added before setting the track mode to showing
+ data.TrackEvents.forEach(function (trackEvent) {
+
+ var trackCueObject = window.VTTCue || window.TextTrackCue;
+ var cue = new trackCueObject(trackEvent.StartPositionTicks / 10000000, trackEvent.EndPositionTicks / 10000000, normalizeTrackEventText(trackEvent.Text));
+
+ trackElement.addCue(cue);
+ });
+ trackElement.mode = 'showing';
+ });
}
function updateSubtitleText(timeMs) {