1
0
mirror of https://github.com/videojs/video.js.git synced 2025-02-06 11:51:07 +02:00

Fixed the loadstart event listener order so it's attached before the HTML5 tech triggers it. fixes #1208 fixes #1207 fixes #1193

This commit is contained in:
Steve Heffernan 2014-05-14 14:58:20 -07:00
parent 8dfe0a4d06
commit bad5130c8f
2 changed files with 18 additions and 11 deletions

View File

@ -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;

View File

@ -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
@ -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;