模态关闭时停止YouTube视频

时间:2015-05-24 18:47:45

标签: twitter-bootstrap youtube modal-dialog playing

我正在尝试使用Bootstrap的Modal在我正在处理的网站上播放youtube视频,但我遇到了一个问题。我从这里阅读了提示:Bootstrap 3 and youtube in Modal

唯一似乎对我有用的是:

Jeremy Kenedy Fiddle

但问题是,当我在视频播放时点击模态以外关闭它时,视频不会停止,所以我仍然可以在后台听到它。我试着寻找答案:google,youtube,stackoverflow,但没有任何效果。

我一直在阅读使用hidden.bs.modal。我搜索并搜索并玩它但它仍然在后台播放。这是我的代码:

HTML:

<a href="#" class="btn btn-default" data-toggle="modal" data-target="#videoModal" data-theVideo="http://www.youtube.com/embed/loFtozxZG0s">VIDEO</a>
<div class="modal fade" id="videoModal" tabindex="-1" role="dialog" aria-labelledby="videoModal" aria-hidden="true">
<div class="modal-dialog">
 <div class="modal-content">
<div class="modal-body">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <div>
                <iframe width="100%" height="350" src=""></iframe>
            </div>
        </div>
    </div>
</div>

JS档案:

  autoPlayYouTubeModal();
    //FUNCTION TO GET AND AUTO PLAY YOUTUBE VIDEO FROM DATATAG
     function autoPlayYouTubeModal() {
       var trigger = $("body").find('[data-toggle="modal"]');
trigger.click(function () {
      var theModal = $(this).data("target"),
          videoSRC = $(this).attr("data-theVideo"),
          videoSRCauto = videoSRC + "?autoplay=1";
      $(theModal + ' iframe').attr('src', videoSRCauto);
      $(theModal + ' button.close').click(function () {
          $(theModal + ' iframe').attr('src', videoSRC);
      });
    $("#videoModal").on('hidden.bs.modal', function (e) {
    $("#videoModal iframe").attr("src", $("#videoModal iframe").attr("src"));
});
  });}

我添加了在该页面上的一个答案中找到的hidden.bs.modal代码,但它似乎没有起作用。你介意帮帮我吗?

非常感谢你,我会感激你得到的每一个帮助!

蒂娜

2 个答案:

答案 0 :(得分:1)

查看此fiddle

我使用了YouTube IFrame API,只需几行代码即可轻松启动和停止视频。小提琴当前在模态打开后启动视频,并在模态关闭后立即停止。

var player;

function loadVideo() {
    player = new YT.Player('player', {
        width: '100%',
        videoId: 'loFtozxZG0s',
    });
}

$('#myModal').on('hide.bs.modal', function (e) {
    player.stopVideo();
});

$('#myModal').on('shown.bs.modal', function (e) {
    player.playVideo();
});

loadVideo函数在#player div中创建一个新的YouTube播放器。这是视频的设置位置videoId

下一个功能会停止hide.bs.modal上的视频,该视频会在模式开始关闭时立即触发。

最后一个函数启动shown.bs.modal上的视频,该视频在显示模式后触发。

您可以找到有关YouTube IFrame API here的更多信息。

希望这有效,

Tugzrida。

答案 1 :(得分:0)

这对我有用:

<script>
    //function to get and autoplay youtube video from datatag:
   function autoPlayYouTubeModal(){
        var trigger = $("body").find('[data-toggle="modal"]');
        trigger.click(function() {
            var theModal = $(this).data( "target" ),
                    videoSRC = $(this).attr( "data-theVideo" ),
                    videoSRCauto = videoSRC+"?rel=0&amp;autoplay=1" ;
            $(theModal+' iframe').attr('src', videoSRCauto);
            $(theModal+' button.close').click(function () {
                $(theModal+' iframe').attr('src', videoSRC);
            });
            $(theModal).on('hide.bs.modal', function (e) {
    $(theModal+' iframe').attr('src', videoSRC);
});
        });
    }
    //the function call:
            $(document).ready(function(){
                autoPlayYouTubeModal();
            });
            </script>

我补充说:

$(theModal).on('hide.bs.modal', function (e) {
    $(theModal+' iframe').attr('src', videoSRC);
});