Chr*_*oth 8 javascript php youtube youtube-api
我知道.seekTo()在Javascript API中工作,但我无法使用iFrame API.这种方法是否受支持?下面的代码成功嵌入了视频,并成功地将console.log -s作为播放器对象.我在控制台中收到错误"player.seekTo不是函数".
<script>
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'u1zgFlCw8Aw'
});
}
$(window).load(function(){
jQuery('#test').click(function(){
//console.log('test');
console.log(player);
player.seekTo(25);
return false;
});
});
</script>
<a href="#" id="test">Test</a>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
这是一个更新的jsfiddle使用新的iframe API工作
仅供参考:如果您只是使用iframe纯HTML嵌入,那么您可以?start=30
选择开始时间
<iframe width="640" height="390"
src="//www.youtube.com/embed/p2H5YVfZVFw?start=30"
frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)
对于API,您可以在特定时间开始播放视频.使用start
参数
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'p2H5YVfZVFw',
playerVars: { 'start': 159, 'autoplay': 1, 'controls': 1 },
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange,
}
});
Run Code Online (Sandbox Code Playgroud)
您只能seekTo
在播放器开始播放后才能拨打电话,或者不做任何事情.检查playerStateChange
回调:
onStateChange': onPlayerStateChange
Run Code Online (Sandbox Code Playgroud)
添加此回调函数
function onPlayerStateChange(evt)
{
if (evt.data==1)
{
// this will seek to a certain point when video starts
// but you're better off using 'start' parameter
// player.seekTo(22);
}
}
Run Code Online (Sandbox Code Playgroud)
所述的jsfiddle在底部按钮寻求30,60,90秒.它已经与所有与'罗马'押韵的浏览器进行了测试.当它打开时,它会为player.seekTo
功能类型设置一个警告框.如果显示"未定义",则表示存在问题.
我相信并不是所有的 javascript 方法都已经在 iframe api 上实现为实验性的,所以如果你尝试过但失败了,我猜不会。不过我还没有详细使用 iframe api。