YouTube(注入)video结束回拨
我将YouTube iframe注入文档中的div并将其绑定到click:
jQuery(document).ready(function($) { jQuery('.video-thumb').click(function(){ ... $('#player').html(''); ... } }
我希望在video结束时进行回调。 我已经阅读了关于onYouTubePlayerAPIReady ,但它必须放在文件外面。
我试图通过这种结构加载video播放器,准备好文件:
var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { height: '421', width: '761', videoId: '', playerVars: { autoplay: 1, autohide: 1, showinfo: 0 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); }
但我遇到了一些问题:
- showinfo:0不起作用,最后还有其他video缩略图
- 我不知道如何更改videoID(并重新启动video?)
- 比第一种方法更多的脚本错误(注入iframe)
我更喜欢使用第一种方法,但如何创建video结束回调? 谢谢。
以下代码的工作示例也在jsfiddle.net上 。
一些说明:
- 使用iframe_api ,而不是javascript_api
- YT.Player构造函数很小,因为您自己构建iframe。
- “playerVars”包含在iframeurl参数中。
- 设置参数“enablejsapi = 1”。
示例标记
Megadeth: Back In The Day Judas Priest: Metal Gods Baltimora: Tarzan Boy --Logging enabled--
JavaScript
function log(msg) { jQuery('#log').prepend(msg + '
'); } function onPlayerStateChange(event) { switch(event.data) { case YT.PlayerState.ENDED: log('Video has ended.'); break; case YT.PlayerState.PLAYING: log('Video is playing.'); break; case YT.PlayerState.PAUSED: log('Video is paused.'); break; case YT.PlayerState.BUFFERING: log('Video is buffering.'); break; case YT.PlayerState.CUED: log('Video is cued.'); break; default: log('Unrecognized state.'); break; } } jQuery(document).ready(function($) { $('.video-thumb').click(function() { var vidId = $(this).attr('id'); $('#container').html(''); new YT.Player('player_'+vidId, { events: { 'onStateChange': onPlayerStateChange } }); }); });