1

我有以下代码,我希望能够在其中 console.log out 播放列表中的视频列表:

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

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

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

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

非常感谢。

4

1 回答 1

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());
  }
}
于 2013-08-03T18:55:31.390 回答