Skip to content

Commit

Permalink
Fixed the loadstart event listener order so it's attached before the …
Browse files Browse the repository at this point in the history
…HTML5 tech triggers it. fixes #1208 fixes #1207 fixes #1193
  • Loading branch information
heff committed May 14, 2014
1 parent 8dfe0a4 commit bad5130
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 11 deletions.
6 changes: 4 additions & 2 deletions src/js/media/html5.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ vjs.Html5 = vjs.MediaTechController.extend({
// If the element source is already set, we may have missed the loadstart event, and want to trigger it.
// We don't want to set the source again and interrupt playback.
if (source && this.el_.currentSrc === source.src && this.el_.networkState > 0) {
player.trigger('loadstart');

// wait for the player to be ready so the player listeners are attached
player.ready(function(){
player.trigger('loadstart');
});
// Otherwise set the source if one was provided.
} else if (source) {
this.el_.src = source.src;
Expand Down
23 changes: 14 additions & 9 deletions src/js/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,20 @@ vjs.Player = vjs.Component.extend({
// see enableTouchActivity in Component
options.reportTouchActivity = false;

// Make sure the event listeners are the first things to happen when
// the player is ready. See #1208
// If not, the tech might fire events before the listeners are attached.
this.ready(function(){
this.on('loadstart', this.onLoadStart);
this.on('ended', this.onEnded);
this.on('play', this.onPlay);
this.on('firstplay', this.onFirstPlay);
this.on('pause', this.onPause);
this.on('progress', this.onProgress);
this.on('durationchange', this.onDurationChange);
this.on('fullscreenchange', this.onFullscreenChange);
});

// Run base component initializing with new options.
// Builds the element through createEl()
// Inits and embeds any child components in opts
Expand All @@ -77,15 +91,6 @@ vjs.Player = vjs.Component.extend({
// this.addClass('vjs-touch-enabled');
// }

this.on('loadstart', this.onLoadStart);
this.on('ended', this.onEnded);
this.on('play', this.onPlay);
this.on('firstplay', this.onFirstPlay);
this.on('pause', this.onPause);
this.on('progress', this.onProgress);
this.on('durationchange', this.onDurationChange);
this.on('fullscreenchange', this.onFullscreenChange);

// Make player easily findable by ID
vjs.players[this.id_] = this;

Expand Down

0 comments on commit bad5130

Please sign in to comment.