【问题标题】:My Youtube player is not worked?我的 Youtube 播放器不工作?
【发布时间】:2013-01-14 10:46:53
【问题描述】:

我已通过此代码在我的页面上添加了一个 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 中可以正常工作。谁能帮帮我。

谢谢:直播是here

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

【问题讨论】:

  • 你的 FF 控制台有错误信息吗?

标签: javascript youtube


【解决方案1】:

YouTube iFrame API .seekTo() not a method?

确保满足以下条件:

  1. 定义了一个带有ID player的容器:&lt;div id="ytplayer"&gt;&lt;/div&gt;.
  2. 代码未延迟。即,不在onload 事件、$(document).ready、setTimeout 等内。否则,IFrame API 加载失败,代码将无法工作。
  3. jQuery 已加载。

【讨论】:

  • Pranav,问题是我想将我的 div 从隐藏状态显示为可见状态。 Firefox 中的这个东西不能让我看到视频的 seeTo(0)(起点)。这是因为 YT 在隐藏时尚未在 Firefox 中准备好。在 Chrome 中我可以看到隐藏的视频可以播放,但在 Firefox 中不能播放
【解决方案2】:

你应该使用

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

【讨论】:

  • 我已经写好了,但是隐藏的时候已经加载了。这对我来说很不寻常。只有我使用过的 statechange 对我有用。在下面试试我的答案
【解决方案3】:
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 中无法播放(目前)。这就是我设置超时功能的原因,因为我的视频从隐藏状态变为可见状态。

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2016-12-26
    • 2015-05-23
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多