diff --git a/src/js/tech/html5.js b/src/js/tech/html5.js index 355a68359f..2cb36ed4e7 100644 --- a/src/js/tech/html5.js +++ b/src/js/tech/html5.js @@ -257,6 +257,12 @@ class Html5 extends Tech { proxyNativeTextTracks_() { let tt = this.el().textTracks; + // Add tracks - if player is initialised after DOM loaded, textTracks + // will not trigger addtrack + for (let i = 0; i < tt.length; i++) { + this.textTracks().addTrack_(tt[i]); + } + if (tt && tt.addEventListener) { tt.addEventListener('change', this.handleTextTrackChange_); tt.addEventListener('addtrack', this.handleTextTrackAdd_); @@ -504,7 +510,7 @@ class Html5 extends Tech { * @return {Object} * @method currentSrc */ - currentSrc() { + currentSrc() { if (this.currentSource_) { return this.currentSource_.src; } else { diff --git a/src/js/tracks/text-track-list.js b/src/js/tracks/text-track-list.js index f4b9943312..336cffabb5 100644 --- a/src/js/tracks/text-track-list.js +++ b/src/js/tracks/text-track-list.js @@ -78,12 +78,16 @@ class TextTrackList extends EventTarget { track.addEventListener('modechange', Fn.bind(this, function() { this.trigger('change'); })); - this.tracks_.push(track); - this.trigger({ - track, - type: 'addtrack' - }); + // Do not add duplicate tracks + if (!this.tracks_.includes(track)) { + this.tracks_.push(track); + this.trigger({ + track, + type: 'addtrack' + }); + } + } /**