在Bootstrap Tab Change上暂停视频

时间:2014-10-01 04:15:31

标签: twitter-bootstrap tabs youtube youtube-api

已经问过这个问题的各种版本,但我找不到太多涉及多个视频和Bootstrap的标签。

我需要的是让一个玩家在点击另一个标签时暂停。

 <div class="row">
            <div class="col-lg-12">
                <ul class="nav nav-tabs" role="tablist" id="myTab">
                    <li class="active"><a href="#tab1" role="tab" data-toggle="tab">Tab1</a></li>
                    <li><a href="#tab2" role="tab" data-toggle="tab">Tab2</a></li>
                    <li><a href="#tab3" role="tab" data-toggle="tab">Tab3</a></li>
                </ul>

                <div class="tab-content">
                    <div class="tab-pane fade in active" id="tab1">
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe id="video1" class="embed-responsive-item" src="//www.youtube.com/embed/7kq5f_apsuM?enablejsapi=1"></iframe>
                        </div>
                    </div>
                    <div class="tab-pane fade" id="tab2">
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe id="video2" class="embed-responsive-item" src="//www.youtube.com/embed/yWqG8ysc3BE?enablejsapi=1"></iframe>
                        </div>
                    </div>
                    <div class="tab-pane fade" id="tab3">
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe id="video3" class="embed-responsive-item" src="//www.youtube.com/embed/EVfGs78wD-c?enablejsapi=1"></iframe>
                        </div>
                    </div>
                </div>
            </div>
        </div>   

这是一个jsFiddle:http://jsfiddle.net/o4eebLp4/

3 个答案:

答案 0 :(得分:3)

我使用本机引导程序选项卡事件找到了此解决方案。这是长时间搜索方式而不使用iframe或视频ID的任何特殊定位的最佳解决方案。

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  var iframe = $(e.relatedTarget.hash).find('iframe'); 
  var src = iframe.attr('src');
  iframe.attr('src', '');
  iframe.attr('src', src);
});

答案 1 :(得分:1)

如果您在网页中有一个或多个视频,则以下操作可在您导航到其他页面时停止播放视频。这是基于@fricks答案和excellent solution来关闭上述@thekingoftruth模式中的视频。

$(function(){
  $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    var $iframes = $(e.relatedTarget.hash).find('iframe');
    $iframes.each(function(index, iframe){
      $(iframe).attr("src", $(iframe).attr("src"));
    });
  });
});

答案 2 :(得分:0)

你需要javascript:

$('#myTab a').click(function (e) {
var selected = $(this).parent().index();
$('#myTab a').each(function(index){
    if(index != selected){
        var iframe = $(".tab-content").children().eq(index).children().children().contents();
       iframe.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*')            
    }
});
});