-1

我通过此代码在我的页面上添加了一个 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>

当用户单击按钮时,我播放视频。它通过删除显示可见:无。现在它在 Firefox 中不起作用,在 chrome 中可以正常工作。有人可以帮我吗。

谢谢:live就在这里

它告诉我TypeError: player.seekTo is not a function有人知道如何等待加载播放器。如果我在萤火虫中手动执行 player.seekTo ,那么它就可以了。

4

3 回答 3

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(目前)中不起作用。这就是我设置超时功能的原因,因为我的视频从隐藏状态变为可见状态。

于 2013-01-14T11:25:51.063 回答
0

YouTube iFrame API .seekTo() not a method?

Make sure that the following conditions are satisfied:

  1. A container with ID player is defined: <div id="ytplayer"></div>.
  2. The code is not deferred. Ie, not within an onload event, $(document).ready, setTimeout, etc. Otherwise, the IFrame API fails to load, and the code will not work.
  3. jQuery is loaded.
于 2013-01-14T11:13:03.800 回答
0

你应该使用

window.onYouTubePlayerAPIReady() {
    player = new YT.Player('ytplayer', {
        height: '390',
        width: '640',
        videoId: 'o9UQSUHHdtA',
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}
于 2013-01-14T11:16:34.100 回答