javascript - 加载 YouTube 视频并收听 onPlayerStateChange

标签 javascript iframe youtube-api dom-events

点击链接后,我尝试播放 YouTube 视频,并在播放完毕后用图像替换该视频。

上半场很轻松。然而我在下半场遇到了麻烦。 最初我只是附加了一个 iframe 嵌入。不过,为了监听 ENDED 事件,我尝试遵循 YouTube 开发文档。现在,我似乎什么也做不了。 请查阅。 这就是我到目前为止所拥有的。

 var t1 = '<div id="tubewrapper"><div id="player"></div></div>'


$("#link").click( function()
           {
             
             $(".trailers-band").append(t1);


    var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
             var player;
               function onYouTubeIframeAPIReady(){
                   player = new YT.Player('player',{
                       height:'100%',
                       width:'100%',
                       videoId:tubeID,
                       events:{
                           'onReady': onPlayerReady,
                           'onStateChange': onPlayerStateChange
                       }
                   });
               }
            function onPlayerReady(event){
                alert("ready");
                event.target.playVideo();
            }

             var done = false;

             function onPlayerStateChange(event){
                 if (event.data == YT.PlayerState.ENDED && !done){
                     done = true;
                     alert("done");

                 }

             }

           }
        );

最佳答案

以下示例演示了如何播放视频、检测视频何时结束,然后在其位置显示图像。

示例:jsFiddle

<div id="player" style="display:none;"></div>
<a href="#" id="link">play</a>
<script>
// Load API asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
        height: '390',
        width: '640',
        videoId: '9vHFsXOdTt0',
        events: {'onStateChange': onPlayerStateChange}
    }); // create the <iframe> (and YouTube player)
}

function onPlayerStateChange(event) {    
    if(event.data === 0) {          
        hideVideo();
    }
}

function hideVideo() {
    var img_url = 'https://www.google.com/images/srpr/logo4w.png';
    $('#player').replaceWith('<img src="'+img_url+'">');
}

$("#link").click(function(){
    $('#player').show(); // show player
    player.playVideo(); // begin playback
});
</script>

关于javascript - 加载 YouTube 视频并收听 onPlayerStateChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18220209/

相关文章:

javascript - 选择框在 Firefox 中被压扁和拉长

javascript - 在 slider 内控制 HTML5 视频

jquery - Jssor、iFrame、内联 CSS 和 Firefox

javascript - 如何判断视频是否受版权保护? YouTube API v3

javascript - 将数组从 python 传输到 javascript

javascript - 如何将数组值转换为变量

javascript - 如何停止自动播放下一个视频 dailymotion?

javascript - html 中的 idm_frm 属性是什么?

youtube - 获取未经授权使用用户ID订阅的用户的 channel 列表

ios - 获取YouTube字幕在iOS上自动显示