Javascript 获取播放的下一个视频的视频id?

Javascript 获取播放的下一个视频的视频id?,javascript,youtube-api,Javascript,Youtube Api,我正在使用Youtube API通过其videoId播放视频。这一切都很好,youtube视频也很好: var player = new YT.Player("videoplayer", { height: 400, width: 600, videoId: videoId, events: { onReady: function (event) { event.target.playVideo(); } } }); 视频结束时,Youtu

我正在使用Youtube API通过其videoId播放视频。这一切都很好,youtube视频也很好:

var player = new YT.Player("videoplayer", {
  height: 400, 
  width: 600, 
  videoId: videoId, 
  events: {
    onReady: function (event) {
      event.target.playVideo();
    }
  }
});
视频结束时,Youtube将显示推荐视频的缩略图。是否可以获取用户单击的视频的视频ID

我希望我可以使用onStateChange方法,但它看起来并没有一个状态来描述正在播放的视频被改变了


有没有一种标准的方法来获取用户选择的下一个Youtube视频的视频id?

好的,我查过了。当用户单击要观看的下一个视频时,不会触发任何事件,但API将触发OnapicChange事件

因此,您可以检查视频id是否有更改,如果有更改,则运行回调:

var oldVideoId = 'abcd';
var checkIfVideoIdChanged = function(event) {
  var newVideoId = event.target.getVideoData().video_id

   if (newVideoId !== oldVideoId) {
     // Do your 'event' logic here
   }
};
var player = new YT.Player("videoplayer", {
  height: 400, 
  width: 600, 
  videoId: videoId, 
  events: {
    onReady: function (event) {
      event.target.playVideo();
    },
    onStateChange: function(event) {
      checkIfVideoIdChanged(event);
    },
    onApiChange: function(event) {
      checkIfVideoIdChanged(event);
    }
  }
});

编辑:您应该同时检查onApiChange和onStateChange,因为有时在新视频立即开始播放时,onApiChange不会被触发。

从未使用过youtube api,但您不能将clickhandler添加到视频链接中,并通过访问处理程序中的$this.attrurl或$this.attrhref来获取视频url?@messervillyoutube的建议位于iframe中,因此我无法直接将事件附加到它们。Youtube IFrame API中也没有任何东西表明能够检测到对这些建议的点击:似乎onStateChange只是注意到,如果播放器暂停、播放或其他什么。我也找不到类似onVideoChange的内容,但您可以尝试保存实际的视频URL,并检查在触发onStateChange后URL是否已更改