Youtube iFrame javascript API onYouTubeIframeAPIReady未触发

时间:2012-11-30 00:25:46

标签: api iframe youtube

这是来自Youtube API文档:

“正如”入门“部分所述,您可以自行创建标记,而不是在页面上写入空元素,而播放器API的JavaScript代码将替换为元素,而不是在页面上创建标记。”

但我无法让API回调到我的javascript。任何帮助都会很棒。

这是我的HTML代码:

 <iframe id="player" type="text/html" width="640" height="360"src="http://www.youtube.com/embed/1_QO8LoGNpc?enablejsapi=1" frameborder="0"></iframe>

JAVASCRIPT:

<script>
    function onYouTubeIframeAPIReady() {
        alert("hey");
        player = new YT.Player('player', {
         // height: '720',
         // width: '1280',
         // videoId: '1_QO8LoGNpc',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
    }
</script>

我可以使用javascript创建iframe但不在页面上设置iframe。帮助!

2 个答案:

答案 0 :(得分:2)

在加载https://www.youtube.com/iframe_api之前,应定义功能 onYouTubeIframeAPIReady()

这是一个想法:

<iframe id="player" type="text/html" width="640" height="360"src="http://www.youtube.com/embed/1_QO8LoGNpc?enablejsapi=1" frameborder="0"></iframe> 

    <script>
            function onYouTubeIframeAPIReady() {
            alert("hey");
            player = new YT.Player('player', {
             // height: '720',
             // width: '1280',
             // videoId: '1_QO8LoGNpc',
              events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
              }
            });
        }
    </script>

    <script src="https://www.youtube.com/iframe_api"></script>

为什么?因为 iframe_api 会在加载后调用此函数。在您的情况下iframe_api之前已加载。

最好的问候。

答案 1 :(得分:0)

但你的代码有效。在这里看到: http://jsfiddle.net/aXLA2/

<iframe id="player" type="text/html" width="640" height="360"src="http://www.youtube.com/embed/1_QO8LoGNpc?enablejsapi=1" frameborder="0"></iframe> 

<script src="https://www.youtube.com/iframe_api"></script>