2016-08-17 137 views
0

我试过一些解决方案,但没有成功。Youtube Iframe API仅适用于第一个

Youtube视频是隐藏的div内。

点击按钮和视频出现,但是当我在暂停按钮点击,在div必要再隐藏(强制性和工作)

在第二次的时候,我点击播放视频按钮,视频显示,但没有自动播放暂停都不会触发隐藏事件。

为什么?

的jsfiddle:https://jsfiddle.net/u19ut5gt/6/

HTML

<div id="fw16-liam"> 
      <div class="fw16-button playvideo">Play Video</div> 
      <div id="liam-video"><div id="ytplayer"></div></div> 
</div> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 

的Javascript

$("#fw16-liam .playvideo").click(function(){ 
       $("#liam-video").fadeIn(1000); 
       runPlayer('0m9hYRUV920'); 
      }); 

      if(document.getElementById('iframe_api') === null){ 
       var tag = document.createElement('script'); 
       tag.src = "https://www.youtube.com/iframe_api"; 
       tag.id = "iframe_api"; 
       var firstScriptTag = document.getElementsByTagName('script')[0]; 
       firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
      } 

      function runPlayer(video_id){ 
       var player; 
       player = new YT.Player('ytplayer', { 
        playerVars: { 
         autoplay: 1, 
         html5: 1, 
         controls: 1, 
         showsearch: 0, 
         showinfo: 0, 
         loop: 1, 
         fs: 0 
        }, 
        height: '300', 
        width: '487', 
        videoId: video_id, 
        events: { 
         onStateChange: function (event) { 
          // Loop after video end 
          if(event.data === YT.PlayerState.ENDED){ 
           event.target.playVideo(); 
          }   

          // If user, pause video, then this hide. 
          if(event.data == 2){ 
           event.target.stopVideo(); 
           $("#liam-video").fadeOut(200); 
          } 
         } 
        } 
       }); 
      } 

CSS

.playvideo{width:112px; height: 37px; color: white;} 
.fw16-button {cursor: pointer;cursor: hand; background-color: red;} 
#liam-video{display:none; background: #9e7969; width: 487px; height:677px; position: relative; left: 0px; top: 20px; border: none;} 
#liam-video iframe{border:none;} 

回答

1

您只应初始化player一次。下次需要复制视频时,请致电playVideo。在你runPlayer功能,尝试这样的事情:

var player; 
function runPlayer(video_id){ 
    if(player) { 
    player.playVideo(); 
    return player; 
    } 
    player = new YT.Player('ytplayer', { 
    ... 
    } 
} 

结帐这个fiddle

+1

就是这样!谢谢。它完美地工作 –