如何在隐藏 Div 时停止 YouTube 视频

How to stop YouTube video when hidding a Div

我过去也提出过类似的问题,但我决定再试一次,因为从那时起我就转向了不同的方向。 (我正在尝试使用 YouTube API,但没有取得任何进展)

我正在尝试建立一个网站,通过使用 hides/shows 不同 divs 的函数来显示不同的页面。其中一个页面有一个来自 YouTube 的视频,我试图找出一种方法来在隐藏相应的 div 时停止播放视频。现在,视频只是在后台播放(您可以听到声音),如果您换成另一个 page/div。

在互联网(即本网站)上进行了一些调查后,我终于找到了一个有效的解决方案,如下所示。

var stopButton = document.getElementById('fecharvideo');

stopButton.onclick = function() {
 var myPlayer = document.getElementById("player"); 
 myPlayer.setAttribute("src", " ");
}; 

不幸的是,正如您可能猜到的那样。这意味着在单击带有 id=fecharvideo 的元素后,iframe 就会消失,这意味着如果您 return 到 div 视频将不再出现,这不是理想。

对于这个问题,是否有任何类似的解决方案可以让我重置视频,而不是完全删除它?

这是fiddle(要测试它打开"Episódio 1",开始视频,通过汉堡菜单打开"Episódios",然后返回"Episódio 1"):https://jsfiddle.net/Santos1600/qu8ejwsm/20/

解决方案:

html

<div id="ep1" class="ep1" style="display: none;">
  <div class="video-background">
    <div class="video-foreground">
      <iframe id="player" src="https://www.youtube.com/embed/videoseries?list=**PLAYLISTID**&modestbranding=1&iv_load_policy=3&rel=0&showinfo=0&loop=1&autoplay=1&autohide=1&enablejsapi=1&playerapiid=ytplayer1" frameborder="0" allowfullscreen allowscriptaccess="always"></iframe>
    </div>
  </div>
  <div class="container">

        <!--Menu/Episódio 1-->
          <div id="myNav2" class="overlayep">
              <div class="overlay-content">
                <ul>
                  <li><a href="javascript:void(0)" onclick="SwapDivsWithClick('ep1','episodios'); toggleVideo(video1,'stopVideo');">EPISÓDIOS</a></li>
                  <ul><li><a href="#">POEMA MEDRICAS</a></li>
                      <li><a href="javascript:void(0)" onclick="SwapDivsWithClick('ep1','ep2'); toggleVideo(video1,'stopVideo');">O CÃO</a></li>
                      <li><a href="javascript:void(0)" onclick="SwapDivsWithClick('ep1','ep3'); toggleVideo(video1,'stopVideo');">TERAPIA À DISTÂNCIA</a></li>
                      <li><a href="javascript:void(0)" onclick="SwapDivsWithClick('ep1','ep4'); toggleVideo(video1,'stopVideo');">MANIA DA PERSEGUIÇÃO</a></li>
                  </ul>
                  <li><a href="javascript:void(0)" onclick="SwapDivsWithClick('ep1','sobre'); toggleVideo(video1,'stopVideo');">SOBRE</a></li></ul>
              </div>
            </div>
            <div class="botaomenu" onclick="myFunction(this); toggleNav2();">
              <div class="bar1"></div>
              <div class="bar2"></div>
              <div class="bar3"></div>
  </div>


  <a href="javascript:void(0)" onclick="SwapDivsWithClick('ep1','segunda'); toggleVideo(video1,'stopVideo');"><img src="assets/logohorizontal.png" alt="logo" class="logosmall"></a>
</div>
</div>

js

var video1 = document.getElementById('player')
function toggleVideo(a, state) { 
  var iframe = a.contentWindow;
  iframe.postMessage('{"event":"command","func":"' + state + '","args":""}', '*'); 
}