我注入YouTube的iframe来在文件准备好一个div,绑定点击:
jQuery(document).ready(function($) {
jQuery('.video-thumb').click(function(){
...
$('#player').html('<iframe width="761" height="421" src="http://www.youtube.com/embed/' + $(this).attr('videoid') + '?rel=0&wmode=transparent" frameborder="0" allowfullscreen></iframe>');
...
}
}
我想在视频结束做回调。 我看了一下onYouTubePlayerAPIReady ,但它必须把外面文件准备好。
我试图通过这种结构加载视频播放器以外的文件准备:
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没有工作,仍然有其他的视频缩略图到底
- 我不知道如何改变视频ID(和重新初始化视频?)
- 比第一种方法更脚本错误(注入的iframe)
我更喜欢使用第一种方法,但如何创建视频结束回调? 谢谢。
下面的代码的一个工作例子也是上jsfiddle.net 。
一些注意事项:
- 采用iframe_api ,而不是javascript_api
- 因为您正在构建自己的iframe的YT.Player构造是最小的。
- 该“playerVars”被列为iframe网址参数。
- 参数“enablejsapi = 1”被设置。
例如标记
<script src="http://www.youtube.com/iframe_api"></script>
<a style="display: block;" class="video-thumb" id="HuGbuEv_3AU" href="#">
Megadeth: Back In The Day
</a>
<a style="display: block;" class="video-thumb" id="jac80JB04NQ" href="#">
Judas Priest: Metal Gods
</a>
<a style="display: block;" class="video-thumb" id="_r0n9Dv6XnY" href="#">
Baltimora: Tarzan Boy
</a>
<div id="container"></div>
<div id="log">--Logging enabled--</div>
JavaScript的
function log(msg) {
jQuery('#log').prepend(msg + '<br/>');
}
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('<iframe id="player_'+vidId+
'" width="420" height="315" src="http://www.youtube.com/embed/'+
vidId+'?enablejsapi=1&autoplay=1&autohide=1&showinfo=0" '+
'frameborder="0" allowfullscreen></iframe>');
new YT.Player('player_'+vidId, {
events: {
'onStateChange': onPlayerStateChange
}
});
});
});