Проблемы с привязкой к $ .jPlayer.event.error - PullRequest
0 голосов
/ 23 января 2012

Я, похоже, не могу связать с событием $ .jPlayer.event.error, но я могу связать с другим событием.

Я использую представление Backbone для управления jPlayer, и вот функция инициализации:

initialize: function() {
    _.bindAll(this, 'render', 'get_media_url', 'on_player_error',
              'play', 'scrub', 'move_playhead', 'on_media_progress',
              'on_player_ready', 'on_player_timeupdate', 'on_player_ended',
              'set_progress_bar',  'set_current_time', 'time_from_percent');
    // set up jplayer and bind essential events to view methods, bound to the current object
    $(this.player).jPlayer(this.player_defaults);
    $(this.player).bind($.jPlayer.event.ready, _.bind(this.on_player_ready, this));
    $(this.player).bind($.jPlayer.event.timeupdate, _.bind(this.on_player_timeupdate, this));
    $(this.player).bind($.jPlayer.event.ended, _.bind(this.on_player_ended, this));
    $(this.player).bind($.jPlayer.event.progress, _.bind(this.on_media_progress, this));
    $(this.player).bind($.jPlayer.event.error, _.bind(this.on_player_error, this));
    this.current_state = this.PAUSED;
},
on_media_progress: function(event){
    $('time#total').html($.jPlayer.convertTime(event.jPlayer.status.duration));
},

on_player_error: function(event){
    alert(event);
},

(отрежьте остальные методы из-за краткости, но вы увидите, что методы определены одинаково; on_media_progress срабатывает без сбоев. on_player_error однако, NADA!)

on_player_ready, on_player_timeupdate, on_player_ended и on_media_progress все стреляют правильно.

on_player_error, однако, никогда не вызывается.

У меня есть только MP3, передаваемый в setMedi a, у меня не установлен Flash, и я загружаю страницу в Firefox 9.0.1, но

Если я установлю errorsAlert: true в объекте this.player_defaults, jPlayer представит свой собственный диалог ошибок, но мой обработчик ошибок по-прежнему никогда не запускается.

Как капитан пиратов с колесом в штанах, ЭТО ВОДИТ МЕНЯ ОРЕХОВ!

Ответы [ 2 ]

0 голосов
/ 23 января 2012

Ответ, благодаря jPlayer Google Group, ответ заключается в том, что вам нужно выполнить всю привязку до создания экземпляра объекта jPlayer - после того, как он был создан, событие ошибки уже сработало, поэтому вы не можете его перехватить больше!

Так что вам нужно сделать это:

$(this.player).bind($.jPlayer.event.ready, _.bind(this.on_player_ready, this));
$(this.player).bind($.jPlayer.event.timeupdate, _.bind(this.on_player_timeupdate, this));
$(this.player).bind($.jPlayer.event.ended, _.bind(this.on_player_ended, this));
$(this.player).bind($.jPlayer.event.progress, _.bind(this.on_media_progress, this));
$(this.player).bind($.jPlayer.event.error, _.bind(this.on_player_error, this));
$(this.player).jPlayer(this.player_defaults);
0 голосов
/ 23 января 2012

Может быть потому, что есть определенные события ошибки:

http://jplayer.org/latest/developer-guide/#jPlayer-event-error-codes

...