2016-02-11 91 views
0

我在背景中使用某种带有YouTube播放列表的滑块。我想知道视频何时发生变化,因此我可以将滑块文本更改为正确的文本。视频更改时检测 - YouTube iFrame API

我搜索了API页面(https://developers.google.com/youtube/iframe_api_reference#Events),似乎无法找到视频更改时触发的事件。有一个吗?

这是我的代码,直到现在。

var tag = document.createElement('script'); 

tag.src = "https://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

window.player; 
var player; 

var playlistVideos = new Array(); 
jQuery('#playlistSlider span').each(function(){ 
    playlistVideos.push(jQuery(this).html()); 
}) 

//console.log(playlistVideos) 

function onYouTubePlayerAPIReady() { 
    player = new YT.Player('playlistSlider', { 
     height: '390', 
     width: '640', 
     loadPlaylist:{ 
      listType:'playlist', 
      list:playlistVideos, 
      index:parseInt(0), 
      //suggestedQuality:'small' 
     }, 
     events: { 
      'onReady': onPlayerReady, 
      //'onStateChange': onPlayerStateChange 
     }, 
    }); 
} 
function onPlayerReady(event) { 
    event.target.loadPlaylist(playlistVideos); 
    event.target.mute(); 
    event.target.setLoop(true); 
} 

奖金也将是知道什么是当前的视频播放(索引)。

+0

嘿,我的回答有帮助吗?随时跟进任何其他问题。 – JAL

+0

还没有尝试,但听起来没错。 – Fredy31

+0

是的工作。我在我的播放列表中为我的文本分配了每个视频ID的对象,并且每次触发onplayerstatechange时都会通过当前视频ID更改文本(从http://stackoverflow.com/a/14778040/954867获取ID) – Fredy31

回答

1

收听播放器的onStateChange回调。

events: { 
    onReady': onPlayerReady, 
    'onStateChange': onPlayerStateChange 
} 

如果事件值为0,则视频结束

function onPlayerStateChange(event) { 
    if (event.data == 0) { 
     // video ended 
    } 
} 

对于知道当前正在播放的视频的索引,保持可变index其被初始设置为0作为当前视频结束并加载下一个,将index加1。 index值将指向您的playlistVideos中的当前视频。