我有以下代码,我希望能够在控制台中登录播放列表中的视频列表:
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
ytplayer.cuePlaylist({
list:"PLf71xE2jRgTXB_LeUJkXxFwCc4r1z5if3"
});
console.log(ytplayer.getPlaylist());
}
但是getPlayList()方法只返回一个空数组。
如果我从这个函数外部调用getPlaylist(),那么在使用它时,它会返回正确的数组。为什么这个方法在这里返回一个空数组?我怎样才能获得播放列表数组?
非常感谢。
答案 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());
}
}