Javascript 单击相关视频时为YouTube JS Player API添加事件回调

Javascript 单击相关视频时为YouTube JS Player API添加事件回调,javascript,youtube,youtube-javascript-api,Javascript,Youtube,Youtube Javascript Api,YouTube允许您向某些事件添加回调。我想在选择视频末尾的相关视频时添加回调 更具体地说,在嵌入式系统中查看视频时,它会在最后显示嵌入式系统中的相关视频。当其中一个被选中时,我想运行一些代码。如何做到这一点?我看到有一个onstate的变化,但没有一个状态与相关视频相关。我是否需要为YT.PlayerState.PLAYING添加一个onStateChange,然后将播放的视频与原始视频进行比较,看看它们是否有所不同?这对我来说似乎是一个合理的解决方案 唯一值得一提的一点(您已经注意到)是,您

YouTube允许您向某些事件添加回调。我想在选择视频末尾的相关视频时添加回调


更具体地说,在嵌入式系统中查看视频时,它会在最后显示嵌入式系统中的相关视频。当其中一个被选中时,我想运行一些代码。如何做到这一点?我看到有一个onstate的变化,但没有一个状态与相关视频相关。我是否需要为YT.PlayerState.PLAYING添加一个onStateChange,然后将播放的视频与原始视频进行比较,看看它们是否有所不同?

这对我来说似乎是一个合理的解决方案

唯一值得一提的一点(您已经注意到)是,您无法判断视频中的更改是否是由于用户单击了相关视频造成的,但是如果您没有与播放器动态交互,比较之前的VideoID就足够了


如果您对简化一些回调/事件处理工作的jQuery插件感兴趣,请注意:

我基本上按照我描述的方式完成了这项工作。以下是我使用的代码:

started = false;

var onYouTubeIframeAPIReady = function(id) {
  var player = new YT.Player('player', {
    videoId: id,
    events: {
      'onStateChange': function (event) {
        if (event.data == 1) { // The video started playing
          started = true;
        }
        if (started && event.data == -1) {
          // Video had already started playing before and is now in
          // "unstarted" state so it must be a new video.
          var video_url = event.target.i.videoUrl;
          var video_id = video_url.replace('http://www.youtube.com/watch?v=', '').replace('&feature=player_embedded', '');
          window.location = '#/view/' + video_id;
        }
      }
    }
  });
}
所以基本上,当视频开始播放时,您将“started”变量设置为true。然后,如果/当视频进入“未开始”状态,如果“开始”为真,则您知道这是一个刚刚开始播放的新视频。在这种情况下,从event.target对象中获取其视频ID,并对其执行任何操作


我的全部承诺是,如果有人想查看上下文,您可以在上看到它的实际操作。

哦,太酷了;是你创造了toogl.es。我在电视上看到了。我评论了关于通过youtube建议搜索API实现自动完成的技巧。。这是一个非常简单的引导自动完成插件——如果有这样的功能就好了。刚刚给了你奖金,谢谢你为我指明了正确的方向!我记得你的评论——autocomplete在我的待办事项短列表中。再次感谢!