2013-07-09 3 views
1

У меня есть следующий код, где я надеялся, чтобы иметь возможность console.log из списка видео в плейлисте:getPlayList() в YouTube API возвращение пустого массива

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

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

Но getPlayList() метод просто возвращает пустой массив.

При игре с ним, если я вызываю getPlaylist() извне этой функции, он возвращает правильный массив. Почему этот метод возвращает пустой массив здесь? И как я могу получить массив плейлистов?

Большое спасибо.

ответ

0

Просто наткнулся на эту проблему самостоятельно. Проблема, похоже, является причудой с игроком и как YouTube (google) определил «готов»

Похоже, что функция onReady игрока срабатывает, когда «хром» для проигрывателя закончил рендеринг (т. Е. связал HTML-документ). Фактические данные игрока (видео или плейлист) загружаются асинхронно, поэтому он готов в любой произвольной точке после.

я поставил простую работу многоборье в месте, которое смотрит на события состояние смены игрока

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()); 
    } 
} 
Смежные вопросы