При использовании API YouTube функция loadvideo не будет работать, если я сначала не оповестю идентификатор видео - PullRequest
1 голос
/ 15 декабря 2010
function playPlaylist(trackstemp) {
    trackstemp = trackstemp.split(' ');
    for (i=0; i < trackstemp.length; i++){
        tracks[i] = trackstemp[i];
    }
    numoftracks = tracks.length - 1;
    currenttrack = 0;
    loadNewVideo(tracks[currenttrack])
}

function loadNewVideo(id) {
ytplayerid.loadVideoById(id, 0);
}

У меня есть функции prev () и next (), которые прекрасно работают, вызывая loadNewVideo (отслеживает [currenttrack]), но исходное видео работает, только если я оповещаю (id) в функции loadNewVideo ().

Любой ключ к пониманию того, почему это происходит?

Ответы [ 3 ]

1 голос
/ 15 декабря 2010

Используете ли вы onYouTubePlayerReady , который сообщает, когда проигрыватель готов?

function onYouTubePlayerReady(){
    //Call you first track here
}
0 голосов
/ 23 октября 2011

Отделите это и поместите в эту голову в своих собственных тегах сценария.

<script type="text/javascript" language="javascript">
  function onYouTubePlayerReady(playerid) { 
    ytp = document.getElementById('ytplayer');      
    ytp.mute();
  };
</script>
0 голосов
/ 15 декабря 2010

Скорее всего, эффект alert заключается в задержке выполнения ytplayerid.loadVideoById(id, 0);, чтобы он удовлетворял условию гонки в вашем коде - например, функция еще не существует, или некоторая зависимость в функцииеще не определено.

Убедитесь, что первый loadNewVideo происходит после загрузки всех других сценариев и готовности DOM (т. е. присоединения функции к событию window.load).

...