我的Youtube播放器没有用?

时间:2013-01-14 10:46:53

标签: javascript youtube

我已通过此代码在我的网页上添加了YouTube视频。

 <div id="ytplayer"></div>
            <script>
                // Load the IFrame Player API code asynchronously.
                var tag = document.createElement('script');
                tag.src = "https://www.youtube.com/player_api";
                var firstScriptTag = document.getElementsByTagName('script')[0];
                firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

                // Replace the 'ytplayer' element with an <iframe> and
                // YouTube player after the API code downloads.
                var player;
                function onYouTubePlayerAPIReady() {
                    player = new YT.Player('ytplayer', {
                        height: '390',
                        width: '640',
                        videoId: 'o9UQSUHHdtA',
                        events: {
                            'onReady': onPlayerReady,
                            'onStateChange': onPlayerStateChange
                        }
                    });
                }
            </script>

我在用户点击按钮时播放视频。通过删除display:none可以看到它。现在它在Firefox中不起作用,在chrome中运行良好。有人可以帮助我。

谢谢:直播是here

它告诉我TypeError: player.seekTo is not a function有人知道如何等待加载播放器。如果我做了player.seekTo手动在firebug然后它工作。

3 个答案:

答案 0 :(得分:0)

YouTube iFrame API .seekTo() not a method?

确保满足以下条件:

  
      
  1. 定义了具有ID播放器的容器:<div id="ytplayer"></div>.
  2.   
  3. 代码不会延期。即,不在onload事件,$(document).ready,setTimeout等内。否则,IFrame API无法加载,代码将无法工作。
  4.   
  5. jQuery已加载。
  6.   

答案 1 :(得分:0)

你应该使用

window.onYouTubePlayerAPIReady() {
    player = new YT.Player('ytplayer', {
        height: '390',
        width: '640',
        videoId: 'o9UQSUHHdtA',
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}

答案 2 :(得分:0)

var _isPlayerReady=  false;
     function _playVideo(){
                setTimeout(function(){
                        if (_isPlayerReady) {
                            player.seekTo(0);
                        }
                        else{
                            _playVideo();
                        }
                },1000);
            }

function onPlayerReady(event){
isPlayerReady = true;
}

由于Ciack404告诉他们在YT API中有2个事件可用。这是我如何做到的。

我在就绪事件上调用onPlayerReady。因为它是隐藏的然后这不能使它在Firefox中可用(如果你没有尝试使用Show()回调那么这个技巧很有用)。

这个代码调用检查播放器存在并在下一秒播放视频时它正常工作。这在每个浏览器中都可以正常工作。

注意: - 我已经看到隐藏的div视频可以在Chrome中播放但在Firefox 17中无效(目前为止)。这就是我设置TimeTime功能的原因,因为我的视频从隐藏状态变为可见状态。