Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绑定到$.jPlayer.event.error时出现问题_Javascript_Jquery_Javascript Events_Jplayer - Fatal编程技术网

Javascript 绑定到$.jPlayer.event.error时出现问题

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_

我似乎无法绑定到$.jPlayer.event.error事件,但我可以绑定到其他事件

我使用主干视图来控制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);
},
由于简洁,请删除其余的方法,但您将看到这些方法的定义是相同的;在媒体上,进展不会失败。但在玩家出错时,娜达

在\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。看:我也试过了