2012-01-22 4 views
0

Я, похоже, не могу привязываться к событию $ .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 а, и я не установлен флэш и я загружаю страницу на Firefox 9.0.1, но

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

Как пиратский капитан с колесиком в штанах, ЭТО МОЖЕТ БЫТЬ НАШИМ!

+0

Не могли бы вы использовать jsfiddle, или мы можем иметь ссылку на веб-сайт, который вы тестируете на? – mowwwalker

+0

Я могу сделать скрипку, но мне нужно изменить код, чтобы вырвать части нашей системы, в которые она привязана. Я постараюсь сделать это в AM. – tkone

+0

Хорошо, вы видели мой ответ? Я чувствую, что '$ .jPlayer.event.error' не является событием, а скорее классом с определенными событиями ошибки в нем. – mowwwalker

ответ

0

Ответ благодаря 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);