YouTube API中的getPlayList()返回空数组

时间:2013-07-09 16:14:11

标签: youtube-api

我有以下代码,我希望能够在控制台中登录播放列表中的视频列表:

function onYouTubePlayerReady(playerId) {
        ytplayer = document.getElementById("myytplayer");

        ytplayer.cuePlaylist({
            list:"PLf71xE2jRgTXB_LeUJkXxFwCc4r1z5if3"
        });
        console.log(ytplayer.getPlaylist());
}

但是getPlayList()方法只返回一个空数组。

如果我从这个函数外部调用getPlaylist(),那么在使用它时,它会返回正确的数组。为什么这个方法在这里返回一个空数组?我怎样才能获得播放列表数组?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我自己偶然发现了这个问题。问题似乎是玩家的怪癖,以及YouTube(谷歌)如何定义“准备好”

当玩家的“chrome”完成呈现时(即,它与HTML文档绑定),玩家的onReady函数似乎会激活。实际播放器数据(视频或播放列表)是异步加载的,所以在之后的某个任意点就可以了。

我做了一个简单的解决方法来查看播放器的状态改变事件

var firstLoad = true;
function onPlayerStateChange(e) {
  if (firstLoad && e.data == YT.PlayerState.CUED) {
      //First Cued event - playlist is now available
      firstLoad = false
      myPlaylistFunction(player.getPlaylist());
  }
}