Javascript 绑定到$.jPlayer.event.error时出现问题
我似乎无法绑定到$.jPlayer.event.error事件,但我可以绑定到其他事件 我使用主干视图来控制jPlayer,下面是初始化函数:Javascript 绑定到$.jPlayer.event.error时出现问题,javascript,jquery,javascript-events,jplayer,Javascript,Jquery,Javascript Events,Jplayer,我似乎无法绑定到$.jPlayer.event.error事件,但我可以绑定到其他事件 我使用主干视图来控制jPlayer,下面是初始化函数: initialize: function() { _.bindAll(this, 'render', 'get_media_url', 'on_player_error', 'play', 'scrub', 'move_playhead', 'on_media_progress', 'on_
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);
},
由于简洁,请删除其余的方法,但您将看到这些方法的定义是相同的;在媒体上,进展不会失败。但在玩家出错时,娜达
在\u播放器\u准备就绪、在\u播放器\u时间更新、在\u播放器\u结束和在\u媒体\u进度上,所有操作都正确启动
然而,在玩家出错时,永远不会被调用
我只有一个MP3被传送到setMedia,我没有安装Flash,我正在Firefox 9.0.1上加载页面,但是
如果我在this.player_defaults对象中设置errorsAlert:true,jPlayer会显示它自己的错误对话框,但我的错误处理程序仍然不会触发
就像一个穿着轮子的海盗船长,这让我发疯了 可能是因为存在特定的错误事件:
答案是,感谢jPlayer Google组,答案是在实例化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);
你可以使用JSFIDLE,或者我们可以有一个到你正在测试的网站的链接吗?我可以做一个FIDLE,但是我必须修改代码,删除系统中与之相关的部分。我会尽量在上午完成。好的,你看到我的答案了吗?我感觉$.jPlayer.event.error不是一个事件,而是一个包含特定错误事件的类。有没有任何理由不通过jPlayer构造函数传递事件处理程序,例如Ready、Play、end等?主干网惯例不赞成这样做吗?我需要将它们绑定到主干网视图,当我像错误一样传递它们时,它似乎不起作用:\ uu.bindthis.on\u player\u error,这是通过默认的\u options对象传递的。问题在于,这是指默认的_options对象,而不是父视图。我想我可以试试u.extendedthis.player_默认值,但重点是上面的代码应该可以工作,对吧?这些是事件类型,是的。但事件是$.jPlayer.event.error。看:我也试过了