YouTube iFrame API .seekTo()不是一种方法?

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)

有任何想法吗?谢谢!

Sim*_*ver 6

这是一个更新的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功能类型设置一个警告框.如果显示"未定义",则表示存在问题.


enc*_*des 0

我相信并不是所有的 javascript 方法都已经在 iframe api 上实现为实验性的,所以如果你尝试过但失败了,我猜不会。不过我还没有详细使用 iframe api。