我似乎无法绑定到$ .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会显示它自己的错误对话框,但我的错误处理程序仍然不会触发。
就像穿着裤子的海盗船长一样,这就是我的坚果!
答案 0 :(得分:0)
答案 1 :(得分: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);